【发布时间】:2018-07-06 10:03:44
【问题描述】:
我正在关注他们执行以下操作的教程:
<a href="{ % url 'films:add_comment' slug=film.slug %}">Leave a comment</a>
他们使用蛞蝓。我没有这样做,但一直在引用一个 ID。我认为对此很重要的代码部分是:
电影/urls.py:
from django.conf.urls import url
from django.urls import path
from . import views
app_name = 'films'
urlpatterns = [
path('', views.index, name='index'),
url(r'^films/<int:film_id>/comment/', views.add_comment, name='add_comment'),
path('films/<int:film_id>/', views.detail, name='detail'),
]
电影/views.py
def add_comment(request, film_id):
film = get_object_or_404(Film, pk=film_id)
if request.method == 'POST':
form = CommentForm(request.POST)
if form.is_valid():
comment = form.save(commit = False)
comment.post = post
comment.save()
return redirect('film:detail',film)
else:
form = CommentForm()
template = 'films/add_comment.html'
context = {'form':form}
return render (request,template,context)
mysite/urls.py:
urlpatterns = [
url(r'^accounts/',include('accounts.urls')),
url(r'^', include('films.urls')),
url(r'^admin/', admin.site.urls),
]
add_comment.html:
{% extends 'base_layout.html' %}
{% block content %}
<div class="create-comment">
<h2>Add Comment</h2>
</div>
{% endblock %}
如果我点击我创建的链接:<a href="{ % url 'films:add_comment' film.id %}">Leave a comment</a>
如果我手动将 url 更改为
我明白了:
但看起来该列表中的 url 3 与我输入的内容匹配?
【问题讨论】:
-
在您的 url 命名空间中,
film和films之间有区别吗?例如,我看到'films:add_comment'和'film:detail' -
我的文件结构是films/templates/films/add_comment.html。如果我这样做 {{ film.title }} 它会显示单个电影的标题。
-
应该是films:detail。修改了相同的 404 的立场。