升级Django版本

时间:2017-04-10 13:02:30

标签: python django django-templates django-views

我是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;

我相信这是我的问题。但我不知道我必须做些什么改变。

任何人都可以帮助我?

非常感谢!!

2 个答案:

答案 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'),
]

谢谢!