我正在尝试在模板中构建一个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
答案 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' %}
在第二种情况下,您必须更改名称以使其唯一。