关于AttributeError: module ‘learning_logs‘ has no attribute ‘urls‘ 的错误记录

在python编程入门实践这本书的第18章中,在讲到创建网页的时候,如果照搬书中的代码就会碰到上面的错误。原因可能是由于这本书出版的比较早。

解决办法如下:

首先修改主文件夹learning_log下的urls文件:这个文件定义了可在管理网站中请求的所有URL。也就是当访问服务器主页时,url所链接的文件是:learning_logs.urls

from django.contrib import admin
from django.urls import path, include

import learning_logs

urlpatterns = [
    path('admin/', admin.site.urls),
    path(r'', include('learning_logs.urls',namespace='learning_logs'))
]

然后在learning_logs文件下新建urls.py文件:这个文件指定响应url对应的视图。

from django.conf.urls import url

from . import views

urlpatterns = {
    # 主页
    url(r'^$', views.index, name='index')
}

然后编写视图

这部分基本上和书上是一致的,运行服务器后,可能出现以下问题:

 'Specifying a namespace in include() without providing an app_name '
django.core.exceptions.ImproperlyConfigured: Specifying a namespace in include() without providing an app_name is not supported. Set the app_name attribute in the included module, or pass a 2-tuple containing the list of patterns and app_name instead.

在learning_logs/urls.py加上app_name = ‘learning_logs’.

urlpatterns = {
    # 主页
    url(r'^$', views.index, name='index')
}

app_name = 'learning_logs'


原因是只在learning_log/urls.py中给了namespace, 但是learning_logs/urls.py中没有设置app_name,所以会找不到learning_logs下的模块,会报错。

添加之后就运行成功了:

Django version 3.1.6, using settings 'learning_log.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
[10/Feb/2021 04:04:05] "GET / HTTP/1.1" 200 313

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值