stacklens / dusai-blog

杜赛的博客的评论区。详情见 Issue。
2 stars 0 forks source link

article/37/ #17

Open stacklens opened 4 years ago

stacklens commented 4 years ago

https://www.dusaiphoto.com/article/37/

stacklens commented 4 years ago

旧评论区读者评论集中帖:


Q:博主你好。我按照你的博文操作,在这一章节前都是OK的。

这一章按照你的来,刚开始自己写的,后来是粘贴复制的你的代码。

还没有测试这一节的扩展用户信息,在测试 写文章 的时候就报错了。以下是报错信息

DoesNotExist at /article/article-create/
User matching query does not exist.
Request Method:    POST
Request URL:    http://39.97.108.114:8000/article/article-create/
Django Version:    2.2.2
Exception Type:    DoesNotExist
Exception Value:    
User matching query does not exist.
Exception Location:    /usr/local/python3/lib/python3.7/site-packages/django/db/models/query.py in get, line 408
Python Executable:    /bin/python3
Python Version:    3.7.3
Python Path:    
['/home/django_project',
 '/usr/local/python3/lib/python37.zip',
 '/usr/local/python3/lib/python3.7',
 '/usr/local/python3/lib/python3.7/lib-dynload',
 '/usr/local/python3/lib/python3.7/site-packages']
Server time:    Sat, 15 Jun 2019 10:50:03 +0000

调试了好几次,查了文档后没找到合适的解决方案。

回退到上一章节所有功能都OK。

本人小白,希望博主指点

A:这个报错的意思是没有找到对应的User数据。

报错页面往下翻一翻,看看bug是从你的代码的哪一句抛出的。


Q: 博主你好,我经常遇到这种问题,提交的没有进去if request.method=='POST'那个分支,有时候没有做任何改动,突然就好了。但是在编辑用户信息这里,一直报错。

A:真正的bug不在userprofile/views里而在useprofile/urls里

urlpatterns = [
    ···
    path('edit/<int:id>', views.profile_edit, name='edit'),
    ···
]

BUG是因为edit/,而正确的代码是这样edit//,所以导致了没有正确重定向,定向到了userprofile/edit里。


Q:博主你好,我想请问一下为什么我输入了数据库迁移语句后系统没有进行任何数据迁移,当我输入:

 from django.contrib.auth.models import User

 User.objects.all().delete()

后系统报错,错误提示为:

Traceback (most recent call last):
  File "C:\Users\Galil\AppData\Local\Programs\Python\Python37\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
  File "C:\Users\Galil\AppData\Local\Programs\Python\Python37\lib\site-packages\django\db\backends\sqlite3\base.py", line 383, in execute
    return Database.Cursor.execute(self, query, params)
sqlite3.OperationalError: no such table: userprofile_profile

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "C:\Users\Galil\AppData\Local\Programs\Python\Python37\lib\site-packages\django\db\models\query.py", line 711, in delete
   ...
  File "C:\Users\Galil\AppData\Local\Programs\Python\Python37\lib\site-packages\django\db\backends\sqlite3\base.py", line 383, in execute
    return Database.Cursor.execute(self, query, params)
django.db.utils.OperationalError: no such table: userprofile_profile

请问这是什么情况呢?

A:migrations文件夹里的init.py文件不要删除。

wangzhihaiSF commented 4 years ago

博主你好,我在个人信息保存提交时,提示错误: NoReverseMatch at /userprofile/edit/5/ Reverse for 'edit' with keyword arguments '{'id': 5}' not found. 1 pattern(s) tried: ['userprofile/edit/(?P[0-9]+)/$'] 用户 5 是当前的登录用户

wangzhihaiSF commented 4 years ago
return redirect("userprofile:edit", id=id) 

我感觉是这个id 的问题,这个id 不应是user 的 id, 而是 profile 的id

stacklens commented 4 years ago
return redirect("userprofile:edit", id=id) 

我感觉是这个id 的问题,这个id 不应是user 的 id, 而是 profile 的id

你 url 里给的是 user_id 吧

wangzhihaiSF commented 4 years ago
return redirect("userprofile:edit", id=id) 

我感觉是这个id 的问题,这个id 不应是user 的 id, 而是 profile 的id

你 url 里给的是 user_id 吧 ‘’‘ urlpatterns = [ path("login/", views.user_login, name="login"), path("logout/", views.user_logout, name="logout"), path("register/", views.user_register, name="register"), path('delete//', views.user_delete, name='delete'), path('edit//', views.profile_edit, name='edit'), ] ‘’’ 是的0.0, 但是我的理解url里的是个标识,而且你代码里获取用户时,id用的就应该是user 的 id,不知我的理解对不对

stacklens commented 4 years ago
return redirect("userprofile:edit", id=id) 

我感觉是这个id 的问题,这个id 不应是user 的 id, 而是 profile 的id

你 url 里给的是 user_id 吧 ‘’‘ urlpatterns = [ path("login/", views.user_login, name="login"), path("logout/", views.user_logout, name="logout"), path("register/", views.user_register, name="register"), path('delete/int:user_id/', views.user_delete, name='delete'), path('edit/int:user_id/', views.profile_edit, name='edit'), ] ‘’’ 是的0.0, 但是我的理解url里的是个标识,而且你代码里获取用户时,id用的就应该是user 的 id,不知我的理解对不对

return redirect("userprofile:edit", user_id=id)

试试这个行不行

jwcen commented 3 years ago

删除更新怎么用户检查啊,不会[捂脸]

Risque647 commented 3 years ago

作者大大 想问一下你这个怎么根据作者的id来查询属于该作者发布的文章查询出来呢

xiongda001 commented 3 years ago

害,看了楼上的评论,不是我一个人返回找不到user.id的错误