【问题标题】:Django admin urlpatterns problemsDjango admin urlpatterns 问题
【发布时间】:2012-09-08 17:44:13
【问题描述】:

我正在尝试完成一个 Django 教程 (https://docs.djangoproject.com/en/dev/intro/tutorial03/) 并且遇到了一个问题,我认为这是我对正则表达式的理解和include() 函数。

我有问题的 urls.py:

from django.conf.urls import patterns, include, url
from django.contrib import admin

admin.autodiscover()

urlpatterns = patterns('',
     url(r'^admin/', include(admin.site.urls)),
     url(r'^polls/', include('polls.urls')),
)

其中,引导我(浏览到http://localhost:8000/admin/)到 polls.urls 的详细视图 - 其代码是:

from django.conf.urls import patterns, url

urlpatterns = patterns('polls.views',
    url(r'^$', 'index'),
    url(r'^(?P<poll_id>\d+)/$', 'detail'),
    url(r'^(?P<poll_id>\d+)/results/$', 'results'),
    url(r'^(?P<poll_id>\d+)/vote/$', 'vote'),
)

我明白为什么它与民意调查匹配并被带到 polls.urls。有什么想法吗?

注意:当我注释掉 url(r'^polls/, include('polls.urls')), 行时,我可以再次看到管理页面

谢谢!

【问题讨论】:

  • 你能从 url(r'^polls/', include('polls.urls')) 中删除 url,吗?这是正则表达式匹配的一些问题。
  • 恐怕不行 - 我确实认为这是正则表达式匹配的问题,但 url 是必需的。我只是不明白为什么当第二个includes 存在但不匹配时它不匹配r'^admin/'
  • 抱歉,只是为了澄清(/纠正我自己),url 似乎不是必需的,但它的删除,虽然仍然允许我看到我的投票页面,但不会让我看到我的管理页面。

标签: regex django django-admin django-views


【解决方案1】:

O.K - 所以我设法解决了这个问题,但不完全确定如何解决。这是一个离开它并解决其他问题的情况,当我回来时它已经修复了!所以,我改变的事情:

1.) 包含 {% load url from future %} 以确保在我的模板中向前兼容

2.) 将 detail.html 中的表单操作更改为 &lt;form action="/polls/{{ poll.id }}/vote/" method="post"&gt;(来自 &lt;form action="{% url 'polls.views.vote' poll.id %}" method="post"&gt;

3.) 最后,可能也是最重要的 - 整理了我的语法!在我的 views.py 文件中,我有 Return HttpResponseRedirect(reverse('polls_results', args=(p.id,))) 而不是 Return HttpResponseRedirect(reverse('poll_results', args=(p.id,)))

我仍然不知道是哪个做到的,但是,如果有人和我处于相同的位置,那么这三者的某种组合会做到!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-29
    • 2011-05-08
    • 2011-10-18
    • 1970-01-01
    • 2021-07-27
    • 1970-01-01
    • 2017-11-10
    • 2012-11-28
    相关资源
    最近更新 更多