Django 不呈现请求的视图
Django doesn't render the requested view
人。我是初学者 Django 开发人员,如果这是一个基本问题,我很抱歉。
我有一个显示电影列表的网页,每部电影都有详细视图,但由于某种原因,从未呈现详细视图。
#views.py
def index(request):
latest_movies = Movie.objects.order_by('-movie_id')[:5]
template = loader.get_template('ytsmirror/index.html')
context = {
'latest_movies' : latest_movies,
}
return HttpResponse(template.render(context, request))
def detail(request, movie_id):
movie = Movie.objects.get(movie_id=movie_id)
template = loader.get_template('ytsmirror/details.html')
context = {
'movie' : movie,
'plot': 'Lorem impsum',
}
return HttpResponse(template.render(context, request))
还有我的urls.py
#urls.py
from django.conf.urls import url
from . import views
app_name = 'ytsmirror'
urlpatterns = [
url(r'$', views.index, name='index'),
url(r'^(?P<movie_id>\d{4})$', views.detail, name='detail'),
]
例如,当我尝试到达 /ytsmirror/4200/ 时,我没有收到任何错误,Django 显然到达了正确的 URL 模式,但没有呈现详细信息视图,它保持打开状态索引视图,没有任何变化。
我做错了什么?谢谢
url(r'$', views.index, name='index')
匹配字符串的结尾,所以基本上它会匹配任何 url,这就是你的代码不起作用的原因。您需要将 url(r'$', views.index, name='index')
替换为 url(r'^$', views.index, name='index')
以便它只匹配空的 url
^
声明字符串开头的位置
$
断言位置在字符串的末尾,或者在字符串末尾的行终止符之前(如果有)
人。我是初学者 Django 开发人员,如果这是一个基本问题,我很抱歉。
我有一个显示电影列表的网页,每部电影都有详细视图,但由于某种原因,从未呈现详细视图。
#views.py
def index(request):
latest_movies = Movie.objects.order_by('-movie_id')[:5]
template = loader.get_template('ytsmirror/index.html')
context = {
'latest_movies' : latest_movies,
}
return HttpResponse(template.render(context, request))
def detail(request, movie_id):
movie = Movie.objects.get(movie_id=movie_id)
template = loader.get_template('ytsmirror/details.html')
context = {
'movie' : movie,
'plot': 'Lorem impsum',
}
return HttpResponse(template.render(context, request))
还有我的urls.py
#urls.py
from django.conf.urls import url
from . import views
app_name = 'ytsmirror'
urlpatterns = [
url(r'$', views.index, name='index'),
url(r'^(?P<movie_id>\d{4})$', views.detail, name='detail'),
]
例如,当我尝试到达 /ytsmirror/4200/ 时,我没有收到任何错误,Django 显然到达了正确的 URL 模式,但没有呈现详细信息视图,它保持打开状态索引视图,没有任何变化。
我做错了什么?谢谢
url(r'$', views.index, name='index')
匹配字符串的结尾,所以基本上它会匹配任何 url,这就是你的代码不起作用的原因。您需要将 url(r'$', views.index, name='index')
替换为 url(r'^$', views.index, name='index')
以便它只匹配空的 url
^
声明字符串开头的位置
$
断言位置在字符串的末尾,或者在字符串末尾的行终止符之前(如果有)