【问题标题】:Django doesn't render the requested viewDjango 不呈现请求的视图
【发布时间】:2017-12-09 18:17:50
【问题描述】:

人。我是 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(r'^$', views.index, name='index')跨度>
  • 成功了。谢谢!你能解释一下发生了什么吗?
  • @pythad 的解释是正确的。

标签: python django urlconf


【解决方案1】:

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

^ 断言字符串开头的位置

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-31
    • 2011-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多