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

时间:2018-01-15 22:26:42

标签: python django typeerror django-urls

我知道这看起来像一个简单的问题,但我自己也很难将其整理出来,所以:

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 个答案:

答案 0 :(得分:2)

您应该使用include()来包含来自其他urls.py

的网址模式
url(r'', include('learning_logs.urls')),

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

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

]

答案 1 :(得分:1)

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

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

(Django 2.0 url() Docs)