Django学习项目-learning log报错合集

Django在根据models创建模型时出现问题__init__() missing 1 required positional argument: 'on_delete'

topic = models.ForeignKey(Topic)

改为

topic = models.ForeignKey(Topic,on_delete=models.CASCADE)

修改后——

参考文章:Django在根据models创建模型时出现问题__init__() missing 1 required positional argument: 'on_delete'-CSDN博客

Django自带的admin后台管理系统修改字段时报错:TypeError: __str__ returned non-string (type NoneType)

谁懂啊 少些了 models.py里少打个return

原来

修改后

解决啦

参考文章:https://blog.csdn.net/qq_44906497/article/details/132479037

  File "D:\learning_log\learning_log\urls.py", line 22
    path('', include('learning_logs.urls'))
           ^
SyntaxError: invalid character ',' (U+FF0C)

path('', include('learning_logs.urls'))英文‘,’打成了中文‘,’

  File "D:\learning_log\ll_env\lib\site-packages\django\template\loader.py", line 19, in get_template
    raise TemplateDoesNotExist(template_name, chain=chain)
django.template.exceptions.TemplateDoesNotExist: index.html

index.html文件在templates下的learning_logs文件夹里,而我在learning_logs文件夹下的views.py里写的是

return render(request, 'index.html')

应该改成——

return render(request, 'learning_logs/index.html')

通了

NoReverseMatch at / 'learning_logs' is not a registered namespace

解释:这个错误表明 Django 试图在 URL 解析中找到名为 'learning_logs' 的命名空间,但是这个命名空间没有被注册。通常这是因为在 urls.py 文件中没有正确地包含对应的应用urls,或者是在模板中使用了 {% url %} 标签时提供的命名空间不存在。

原因——learninglog/urls.py中

path('', include('learning_logs.urls'))

没有定义命名空间

解决——

path('', include('learning_logs.urls',namespace='learning_logs'))

还是报错——

  File "D:\learning_log\learning_log\urls.py", line 22, in <module>
    path('', include('learning_logs.urls',namespace='learning_logs'))
  File "D:\learning_log\ll_env\lib\site-packages\django\urls\conf.py", line 42, in include
    raise ImproperlyConfigured(
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.
 

解释:

这个错误通常发生在Django项目中,当你尝试使用include()函数来包含其他的URL配置时,并且指定了一个命名空间(namespace),但是使用的方式不正确导致的。在Django中,使用include()函数时可以指定一个可选的第二个参数作为命名空间,但是如果你仅仅提供了一个元组,并且元组中只有一个元素,那么这个元素就会被解释成是被包含的模块或者URL配置,而不是命名空间。

原因—spacename不是这么命名的

解决:

    path('', include(('learning_logs.urls','learning_logs'),
                     namespace='learning_logs'))

还是报错——

解释:

这个错误表明 Django 在尝试为名为 'index' 的视图函数反向生成 URL 时失败了。这通常发生在你的 urls.py 文件中没有相应的路由或者视图函数名称拼写错误。

原因:learning_logs/urls.py文件里没有给views.index一个name

path('',views.index)

解决:将上述代码修改为

path('', views.index, name='index'),

成了——

WARNINGS:
?: (2_0.W001) Your URL pattern '^$' [name='index'] has a route that contains '(?P<', begins with a '^', or ends with a '$'. This was likely an oversight when migrating to django.urls.path().

path('^$', views.index, name='index'),

解释:问题是Django新版本改变导致URL中不需要再使用正则表达式了,只需要路径就OK了。

解决:去掉正则表达式

path('', views.index, name='index'),

参考文章:Django中url的正则表达式错误_urls.w002-CSDN博客

Exception Value:    
topics() missing 1 required positional argument: 'topic_id'

views.py试图文件中

def topics(request, topic_id):

改为:

def topics(request):

ModuleNotFoundError: No module named 'django.core.urlresolvers'

解释:Django版本不兼容(在Django 2.0及以上版本中,urlresolvers已被移除)

解决:如果你使用的是Django 2.0或更高版本,你需要将代码中的django.core.urlresolvers替换为django.urls

from django.core.urlresolvers import reverse

改为

from django.urls import reverse

Exception Value:edit_entry() got an unexpected keyword argument 'topic_id'

解决:

learning_logs/urls.py文件中将

path('edit_entry/<int:topic_id>', views.edit_entry, name='edit_entry'),

改为—— 

path('edit_entry/<int:entry_id>', views.edit_entry, name='edit_entry'),

  File "D:\learning_log\users\urls.py", line 4, in <module>
    from django.contrib.auth.views import login
ImportError: cannot import name 'login' from 'django.contrib.auth.views' (D:\learning_log\ll_env\lib\site-packages\django\contrib\auth\views.py)

修改方法:

learning_log/users/urls.py中的

from django.contrib.auth.views import login 替换为

from django.contrib.auth import login

参考文章:https://www.cnblogs.com/qianzf/p/14333823.html

 File "D:\learning_log\learning_log\urls.py", line 22, in <module>
    path('users/', include('users.urls', namespace='users')),
  File "D:\learning_log\ll_env\lib\site-packages\django\urls\conf.py", line 42, in include
    raise ImproperlyConfigured(
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.

解释:ImproperlyConfigured 异常是在 Django 项目的设置文件(settings.py)中配置不当时抛出的。

解决:将learning_log/learning_log/urls.py中的

path('users/', include('users.urls', namespace='users')),

改为——

path('users/', include(('users.urls','users'), namespace='users')),

参考文章:raise ImproperlyConfigured( django.core.exceptions.ImproperlyConfigured: Specifying a namespace in i-CSDN博客 

输入http://127.0.0.1:8000/users/login/ 报错:

Exception Value:login() got an unexpected keyword argument 'template_name'

解释:

在Django2.0中内置登陆视图不再是函数,而是类,位置在django.contrib.auth.views.LoginView

解决:

# from django.contrib.auth import login
from django.contrib.auth.views import LoginView

from . import views

urlpatterns = [
    # 登录页面
    #path('login/', login, {'template_name':'users/login.html'},
    #    name='login'),
    path('login/', LoginView.as_view(template_name='users/login.html'),
         name='login'),
    ]

参考文章:

python - TypeError: login() got an unexpected keyword argument 'template_name' - Stack Overflow

TypeError: login() got an unexpected keyword argument 'template_name'_typeerror: loginapi.login() got an unexpected keyw-CSDN博客 

 owner = models.ForeignKey(User) TypeError: __init__() missing 1 required positional argument: 'on_delete'

解释:on_delete=models.CASCADE是一个额外的参数,指定当关联的用户对象被删除时,该如何处理这个外键关系。这是一个必须提供的参数,因为从Django 2.0开始,这个参据是必须的。

解决:learning_logs/models.py文件中

owner = models.ForeignKey(User)

改为:

owner = models.ForeignKey(User, on_delete=models.CASCADE)

参考文章:owner = models.ForeignKey(User)出现TypeError-CSDN博客

没有继续页面美化前——

丑丑的——

 

  • 19
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值