我是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时,我得到错误&#34; TypeError:view在include()&#34;的情况下必须是可调用的或list / tuple。然后,我将我的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'),
]
现在,当我打开浏览器(http://localhost:8000)时,我有NoReverseMatch:
&#34;反向&#39; controli2c.view.view_home&#39;未找到。 &#39; controli2c.views.view_home&#39;不是有效的视图函数或模式名称。&#34;
在论坛的帖子中我发现:
&#34;解决方案是更新您的urls.py以包含可调用的视图。这意味着您必须在urls.py中导入视图。 如果您的网址格式没有名称,那么现在是添加网址模式的好时机,因为使用虚线的python路径进行反转不再有效。&#34;
我相信这是我的问题。但我不知道我必须做些什么改变。
任何人都可以帮助我?
非常感谢!!
答案 0 :(得分:0)
现在你必须传递一个可调用的,所以:
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^leds/', include('ledscontrol.urls')),
url(r'^', views.view_home),
]
我认为现在可能会奏效。
答案 1 :(得分: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'),
]
谢谢!