【发布时间】:2026-02-09 21:45:01
【问题描述】:
我是 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 时,我收到错误“TypeError: view must be a callable or a list/tuple in the case of include()”。然后,我将 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 中导入视图。如果您的 URL 模式没有名称,那么现在是现在是添加一个的好时机,因为使用虚线 python 路径进行反转不再有效。”
我相信这是我的问题。但我不知道我必须做些什么改变。
谁能帮帮我?
非常感谢!!
【问题讨论】:
-
哪一点你不明白?您需要使用可调用对象而不是字符串,并且需要给它一个特定的名称。
-
您似乎在使用this project。 18个月没更新了,找别的库可能会更好。如果你决定使用它,那么我会坚持使用 Django 1.8.X(最新的版本是 1.8.18)而不是尝试升级它,特别是如果你是 Django 新手。 Django 1.8 是 LTS,因此至少会在 2018 年 4 月之前得到支持。
标签: python django django-templates django-views