首页 文章

TypeError:url()得到了一个意外的关键字参数'name_space'

提问于
浏览
1

我知道它看起来像一个简单的问题,但我还是太新了,不能自己整理出来,所以:

learning_log/urls.py

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

urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'', 'learning_logs.urls',name_space='learning_logs'),
        ]

以前我有以下错误,所以我删除了包含功能

ImproperlyConfigured:不支持在include()中指定名称空间而不提供app_name . 在包含的模块中设置app_name属性,或者传递包含模式列表和app_name的2元组 .


learing_logs/urls.py

"""Defines URL patterns for learning_logs."""

    from django.conf.urls import  url

    from . import views

    urlpatterns=[
        #Homepage
        url(r'^$',views.index,name='index'),

    ]

views.py

from django.shortcuts import render

    #Create your views here.

    def index(request):
        """The home page for Learning Log"""
        return render(request,'learning_logs/index.html')

我正在使用Django 2.0和Python 3.6.1

你能否告诉我为什么我得到带有name_space arg的TypeError,这与Django版本有关,非常感谢提前 .

2 回答

  • 2

    您应该使用 include() 来包含来自另一个 urls.py 的网址模式

    url(r'', include('learning_logs.urls')),
    

    没有带有下划线的 name_space 参数 . include() 函数接受 namespace . 但是,正如错误消息所示,您应该在包含的 urls.py 中设置 app_name 而不是使用 namespace . 除非您多次包含相同的URL,否则不需要使用 namespace .

    from . import views
    app_name = 'learning_logs'
    urlpatterns=[
        #Homepage
        url(r'^$',views.index,name='index'),
    
    ]
    
  • 1

    你想要的参数可能是 name 而不是 name_space

    url(r'', 'learning_logs.urls', name='learning_logs')
    

    (Django 2.0 url() Docs)

相关问题