Django无法呈现请求的视图

时间:2017-07-05 22:36:28

标签: python django urlconf

人。我是初学者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模式,但没有呈现详细信息视图,它保留在索引视图中,没有任何改变。

我做错了什么?感谢。

1 个答案:

答案 0 :(得分:2)

url(r'$', views.index, name='index')匹配字符串的结尾,所以基本上它会匹配任何网址,这就是你的代码无效的原因。您需要将url(r'$', views.index, name='index')替换为url(r'^$', views.index, name='index'),以便它只匹配空网址

^在字符串

的开头断言位置

$断言字符串末尾的位置,或者在字符串末尾的行终止符之前(如果有的话)