我是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路径反转不再起作用。“
我认为这是我的问题。但我不知道我必须做什么改变。
任何人都可以帮到我吗?
非常感谢!
哪一点你不明白?你需要使用可调用的而不是字符串,并且你需要给它一个特定的名字。 –
看起来你正在使用[这个项目](https://github.com/blobsmith/controli2c)。它尚未更新18个月,因此寻找另一个图书馆可能会更好。如果你决定使用它,那么我会坚持使用Django 1.8.X(最新的版本是1.8.18),而不是试图升级它,特别是如果你是Django的新手。 Django 1.8是一款LTS,因此将至少支持至2018年4月。 – Alasdair