django模板url解析错误

时间:2014-05-30 10:59:38

标签: django django-templates django-views django-urls

我正在尝试在模板中构建一个URL,但最终会出现以下错误。我在这里做错了什么?

编辑:

'url' requires a non-empty first argument. The syntax changed in Django 1.5, see the docs.

urls.py

url(r'^launch$', views.LaunchInstanceView.as_view(), name='launch')

模板:

<a href="{%url launch %}" >Launch</a>

我也试过

urls.py

url(r'^launch$', views.LaunchInstanceView.as_view(), name='instance.views.launch')

模板:

<a href="{%url instances.views.launch %}" >Launch</a>

编辑1:

带引号的

将错误视为

<a href="{%url 'launch' %}" >Launch</a>

Reverse for 'launch' with arguments '()' and keyword arguments '{}' not found.

urls.py

urlpatterns = patterns(VIEW_MOD,
url(r'^$', views.IndexView.as_view(), name='index'),
url(r'^launch$', views.LaunchInstanceView.as_view(), name='launch'),
url(r'^(?P<instance_id>[^/]+)/$',
    views.DetailView.as_view(), name='detail'),
)

views.py

class LaunchInstanceView(workflows.WorkflowView):
   workflow_class = project_workflows.LaunchInstance

   def get_initial(self):
     initial = super(LaunchInstanceView, self).get_initial()
     initial['project_id'] = self.request.user.tenant_id
     initial['user_id'] = self.request.user.id
     return initial

3 个答案:

答案 0 :(得分:2)

应该是:

<a href="{% url 'launch' %}" >Launch</a>

答案 1 :(得分:0)

您应该提供名称,因为'launch'是您的网址。 如果您想调用<a href="{%url 'launch' %}" >Launch</a>

之类的网址,请修改一下
url(r'^launch$', views.LaunchInstanceView.as_view(), name='launch')

如果我错了。请更新您的问题,以便我轻松了解您的问题。

答案 2 :(得分:0)

如果以上提供的urls.py是你ROOT_URLCONF ..那么以下应该有效:

url(r'^launch/$', views.LaunchInstanceView.as_view(), name='launch')  #Its a good practice to put '/' at the end of the pattern name, so if someone enters a '/' at the end in the browser it doesn't give 404

<a href="{% url 'launch' %}" >Launch</a>

,否则

请检查您的settings.py文件并查看ROOT_URLCONF指向的文件。 如果它与root urls.py文件中的包含上述urls.py 不同,请检查是否 包含使用命名空间例如

 url(r'^xyz/', include('path_to_above_urls.py', namespace='abc')),

或在根urls.py中有一些同名的其他网址,例如:

 url(r'some_pattern$', someview.as_view(), name='launch'),
 url(r'^xyz/', include('path_to_above_urls.py')),

在第一种情况下,您必须使用{% url 'abc:launch' %}

访问网址

在第二种情况下,您必须更改名称以使其唯一。