【问题标题】:django templates url parse errordjango模板url解析错误
【发布时间】:2014-07-20 02:49:30
【问题描述】:

我正在尝试在模板中构建一个 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

【问题讨论】:

  • 请查看已编辑的问题

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


【解决方案1】:

应该是:

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

【讨论】:

  • 对不起,我已经纠正了这个问题。我的错误是在添加 {% %} 后发生的
  • 这个答案仍然有效,“启动”必须用引号引起来。
  • 我尝试使用引号并得到以下错误 Reverse for 'launch' with arguments '()' and keyword arguments '{}' not found.
  • 更改您的urls.py,使URL 模式与您在模板中使用的name 具有相同的name。在这种情况下,两者都应该是“launch”而不是“instances.views.launch”。
  • 是的,我已经更改,现在它只启动但仍然出现相同的错误
【解决方案2】:

您应该提供名称,因为“启动”是您的网址。 如果你想调用像&lt;a href="{%url 'launch' %}" &gt;Launch&lt;/a&gt;这样的url,请编辑它

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

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

【讨论】:

    【解决方案3】:

    如果上面提供的 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 指向的文件。 如果它不同并且您将上述 urls.py 包含在根 urls.py 文件中,那么请检查它是否 或者 被包含在 使用命名空间 例如

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

    或者在根 urls.py 中有一些其他同名的 url 例如:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-27
      • 2017-05-12
      • 2016-04-21
      • 2012-09-10
      • 1970-01-01
      • 2013-03-17
      • 2016-04-03
      • 2019-07-24
      相关资源
      最近更新 更多