【问题标题】:Django - SyntaxError at URL fileDjango - URL 文件中的语法错误
【发布时间】:2015-11-10 16:25:47
【问题描述】:

我的基本 URL 中的 Django(Django 1.8、Python 3.4)出现语法错误。这是ir的代码:

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

from login_vacations import views as login_views

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^login/$', login_views.index, name="login_vacations"),
    url(r'^logout/$', login_views.logout_vacations, name='logout_vacations'),
    url(r'^vacations/', include('vacations_app.urls')),
]

vacations_app 存在于文件夹中,其中确实有一个 urls.py 文件。错误如下:

invalid syntax (urls.py, line 10)

相反,如果我从包含函数中删除单引号,错误将是:

name 'vacations_app' is not defined

如果我完全删除第 10 行,应用程序将正常运行。但我不明白为什么。这一行的结构与第 7 行的结构完全相同(包括管理 url)。

vacations_app/urls.py 的代码如下:

from django.conf.urls import patterns, include, url
from django.views.generic import TemplateView

from vacations_app import views as vacations_views

urlpatterns = [
    url(r'^$', vacations_views.vacations_public_view, name='vacations_public_view'),
    url(r'^my_vacations/$', vacations_views.my_vacations, name='my_vacations'),
    url(r'^new_vacation/$', vacations_views.new_vacation, name='new_vacation'),
    url(r'^show/(?P<vacation_id>\w+)/$'), vacations_views.show_vacation, name='show_vacation'),
    url(r'^show/(?P<vacation_id>\w+)/add_destination/$'), vacations_views.add_destination_to_vacation, name='add_destination_to_vacation'),
    ]

可以在此处找到错误的完整跟踪:http://dpaste.com/2A1B6DS

有人可以帮我吗?

【问题讨论】:

  • vacations_app/urls.py的内容是什么?
  • 你在settings.py的installed_apps中添加了vacations_app吗?
  • 你能提供你的错误的完整回溯吗?
  • 我编辑了问题以提供更多详细信息,如你们所问
  • @Alasdair 我编辑了问题以包含它

标签: python django django-urls


【解决方案1】:

看起来您在第 10 行和第 11 行的 Vacations_app/urls.py 中有两个额外的右括号。现在您有:

url(r'^show/(?P<vacation_id>\w+)/$'), vacations_views.show_vacation, name='show_vacation'),
url(r'^show/(?P<vacation_id>\w+)/add_destination/$'), vacations_views.add_destination_to_vacation, name='add_destination_to_vacation'),

它们应该看起来像:

url(r'^show/(?P<vacation_id>\w+)/$', vacations_views.show_vacation, name='show_vacation'),
url(r'^show/(?P<vacation_id>\w+)/add_destination/$', vacations_views.add_destination_to_vacation, name='add_destination_to_vacation'),

【讨论】:

    【解决方案2】:

    您是否将应用程序 (vacations_app) 添加为 INSTALLED_APPS 在您的 settings.py 中?我也对你的urlpatterns = [] 有点怀疑,因为我的一些项目中有urlpatterns = patterns()

    如果可能,您能否分享您的settings.py(省略可识别信息)?

    【讨论】:

    • 这应该是一条评论。在任何情况下,这些都不是语法错误的原因。
    • 使用列表而不是模式 function 是声明 url 模式的新首选方式(参见 doc
    • @DanielRoseman 理想情况下我会发表评论,但我不能发表评论,因为我之前发布时的声誉是 46。我认为乔伊·威廉(Joey Wilhelm)一针见血。
    猜你喜欢
    • 2011-08-05
    • 1970-01-01
    • 2011-07-30
    • 2021-09-07
    • 2011-08-26
    • 1970-01-01
    • 1970-01-01
    • 2013-01-08
    • 1970-01-01
    相关资源
    最近更新 更多