如果發現用戶登錄異常等情況請不要驚慌,換個瀏覽器就好了,谷歌有這個問題,也困擾我很久。
如果搭建過程,發現新建topic異常等現象,把不要驚慌,可能是你沒有進行數據重新清理,請徹底格式化數據庫就好了。
1.這不是一個容易的事,如果你之前並沒有做過。
2.我這是基於pycharm
admin 是用戶主頁,admin 不是必須的,admin中可以注冊你的模型(數據庫模型)
這個地方添加你的app名字
templates模板路徑地址
接下來需要創建數據庫
python manage.py migrate
創建超級用戶
python manage.py createsuperuser
用戶名和密碼必須要輸入,密碼必須包含8個字符
每次添加新的數據庫模板我們需要,我們要調整數據庫,遷移數據庫
python manage.py makemigrations learning_logs
python manage.py migrate
接下來使用shell來調試
對數據庫做了改動如果數據不重要可以直接清空,就不用下面的步驟了
python manage.py flush
#首先進行數據關聯用戶,先啟動shell
python manage.py shell
from django.contrib.auth.models import User
User.objects.all()
#關聯數據
for user in User.objects.all():
(table)
print(user.username,user.id)
#遷移數據庫 以下命令要在shell里面輸入(ctr+z)
python manage.py makemigrations learning_logs
#選擇數據1
python manage.py migrate
python manage.py shell
#下面是一些驗證數據 from learning_logs.models import Topic topics = Topic.objects.all()
#主題所有者打印
print(topic,topic.owner)
for topic in topics: (table 空格下面的語句不然會出錯) print(topic.id,topic) t=Topic.objects.get(id=1) t.text t.date_added t.entry_set.all()
這幾條似乎很重要,負責后面網站添加數據,數據庫貌似會出一些問題
我大概遇到了這幾個問題
上面的 fields 決定了展現用戶form的哪幾項,有的如果用戶沒有創建,django會幫你創建,有時候會導致一些我們不想要的東西,所以只列舉你想要創建的對象,不能選擇 --all--
forms是表單,我們可以通過指定 get和post來區別是獲取一個空表單還是提交表單
很慶幸 它工作了
有 id可以填,沒有就不要添參數會出錯
通過
python manage.py startapp users
可以快速創建一個新的應用程序目錄,包含必備的文件樹
如果發現一些無法控制網頁錯亂,無法跳轉等事項請確認是不是瀏覽器緩存的故障,更換瀏覽器或者清空cookie可能能夠解決。
File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 678, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "D:\python_work\myweb\learning_logs\models.py", line 6, in <module>
class Topic(models.Model):
File "D:\python_work\myweb\learning_logs\models.py", line 10, in Topic
owner = models.ForeignKey(User)
TypeError: __init__() missing 1 required positional argument: 'on_delete'
owner = models.ForeignKey(User,on_delete=models.DO_NOTHING)#不然說參數錯誤 關聯到一起
python manage.py shell from django.contrib.auth.models import User User.objects.all() for user in User.object.all(): print(user.username,user.id)