2017-04-03 48 views
0

我只是試圖使用Django中的url標記與另一個頁面進行簡單連接。我收到「'set'對象不可逆的錯誤」。搜索了一下後,我找不到任何東西。這是什麼意思的對象不可逆Django

urls.py

from django.conf.urls import url 
from . import views 

APP_NAME = 'website' 
urlpatterns = { 
    url(r'^$', views.admin_view, name='adminview'), 
    url(r'^eventview/$', views.event_view, name='eventview'), 
} 

admin_view.html

<!DOCTYPE html> 
<html lang="en" > 
<head> 
{% load static %} 
    {% block header%} 
    {% include 'website/header.html' %} 
    {% endblock %} 

    <!-- Insert custom css here --> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
</head> 
<body> 

<!-- top navbar --> 
    <nav class="navbar navbar-inverse navbar-fixed-top"> 
    <div class="container-fluid"> 

     <div class="navbar-header"> 
     <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"> 
      <span class="sr-only">Toggle navigation</span> 
      <span class="icon-bar"></span> 
      <span class="icon-bar"></span> 
      <span class="icon-bar"></span> 
     </button> 
     <a class="navbar-brand" href="#">Vivid Fireworks</a> 
     </div> 

     <div id="navbar" class="navbar-collapse collapse"> 
     <ul class="nav navbar-nav navbar-right"> 
      <li><a href="{% url adminview %}">Dashboard</a></li> 
      <li><a href="{% url eventview %}">Add Show</a></li> 
      <li><a href="#">Settings</a></li> 
      <li><a href="#">Profile</a></li> 
      <li><a href="#">Help</a></li> 
     </ul> 
     </div> 
    </div> 
    </nav> 

我還沒有跑進前這個問題,現在看來似乎會是一個簡單的解決只是一些我在看。任何幫助表示讚賞。

回答

3

urlpatterns應該是一個列表[...]。您目前有一套{...}。它應該是:

{% url 'adminview' %} 
{% url 'eventview' %} 

如果你想使用的命名空間,然後app_name應該是小寫:

urlpatterns = [ 
    url(r'^$', views.admin_view, name='adminview'), 
    url(r'^eventview/$', views.event_view, name='eventview'), 
] 

在模板中,當URL模式名稱是一個字符串,你應該使用引號。

app_name = 'website' 
url_patterns = [ 
    ... 
] 

然後,您需要包括命名空間,當您使用URL標記

{% url 'website:adminview' %} 
{% url 'website:eventview' %} 
+0

好吧那固定的問題,謝謝。爲什麼使用名稱空間來讓Django處理它? –

+0

*爲什麼使用命名空間?*對於這裏的註釋來說太大了。我只是提到它,因爲你的代碼中有'APP_NAME',因爲它是大寫字母,所以不會有任何效果。 – Alasdair

+0

好的,謝謝我會去看看。 –