2017-04-10 113 views
0

我是Django的新手,我在這裏閱讀了很多主題,但沒有找到解決方案。我相信這很容易,但我找不到解決方案。升級後的NoReverseMatch錯誤Django版本

基本上我有我的urls.py在Django 1.8.4精碼和作品:

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

    urlpatterns = [ 
    url(r'^admin/', include(admin.site.urls)), 
    url(r'^leds/', include('ledscontrol.urls')), 
    url(r'^', 'controli2c.view.view_home'), 
    ] 

我的模板文件包含

 {% url 'controli2c.views.view_home' as home_url%} 
     <a href="{% url 'controli2c.views.view_home' %}" {% if request.path == home_url %} class="active"{% endif %} >HOME</a> 

當我更新的Django,我得到的錯誤「在include()」的情況下,TypeError:視圖必須是可調用的或列表/元組。然後,我改變我的urls.py代碼:

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

urlpatterns = [ 
url(r'^admin/', include(admin.site.urls)), 
url(r'^leds/', include('ledscontrol.urls')), 
url(r'^', 'views.view_home'), 
] 

現在,我有NoReverseMatch當我打開瀏覽器(http://localhost:8000):

「反向的「controli2c.view.view_home找不到。 'controli2c.views.view_home'不是有效的視圖函數或模式名稱。「

在論壇上,我發現一個帖子:

「的解決方案是更新urls.py包括視圖可調用這意味着,你必須輸入你的urls.py. 認爲如果您的網址格式沒有名稱,現在是添加網址的好時機,因爲使用虛線python路徑反轉不再起作用。「

我認爲這是我的問題。但我不知道我必須做什麼改變。

任何人都可以幫到我嗎?

非常感謝!

+0

哪一點你不明白?你需要使用可調用的而不是字符串,並且你需要給它一個特定的名字。 –

+0

看起來你正在使用[這個項目](https://github.com/blobsmith/controli2c)。它尚未更新18個月,因此尋找另一個圖書館可能會更好。如果你決定使用它,那麼我會堅持使用Django 1.8.X(最新的版本是1.8.18),而不是試圖升級它,特別是如果你是Django的新手。 Django 1.8是一款LTS,因此將至少支持至2018年4月。 – Alasdair

回答

0

我找到了解決方案!

讓我的模板文件使用相同的代碼,我必須讓這些變化

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

urlpatterns = [ 
url(r'^admin/', include(admin.site.urls)), 
url(r'^leds/', include('ledscontrol.urls')), 
url(r'^', 'views.view_home',name='controli2c.views.view_home'), 
] 

謝謝!

0

現在你必須通過一個可調用的,所以:

urlpatterns = [ 
    url(r'^admin/', include(admin.site.urls)), 
    url(r'^leds/', include('ledscontrol.urls')), 
    url(r'^', views.view_home), 
] 

我認爲現在可能會奏效。

+0

嗨!我很抱歉,我試圖編寫這段代碼。所以,這不是解決方案。謝謝! – FelipeFonsecabh