1. 程式人生 > >2018.7.7-數據庫配置方面及首頁方面的問題

2018.7.7-數據庫配置方面及首頁方面的問題

verbose span 允許 https oot DBName pri ref rom

數據庫方面的問題

今天遇到的第一個問題就是數據庫配置的問題,首先貼上MySQL數據庫的通用配置:

技術分享圖片
 1 DATABASES = {
 2     default: {
 3     ENGINE: django.db.backends.mysql,
 4     NAME:dbname,
 5     USER: root,
 6     PASSWORD: xxx,
 7     HOST: ‘‘,
 8     PORT: ‘‘,
 9     }
10 }
setting文件配置摘要 技術分享圖片
1 # 由於Django內部連接MySQL時使用的是MySQLdb模塊,而python3中還無此模塊,所以需要使用pymysql來代替
2 3 # 如下設置放置的與project同名的配置的 __init__.py文件中 4 5 import pymysql 6 pymysql.install_as_MySQLdb() 
_init_文件配置摘要

根據這個配置就可使用MySQL數據庫來完成後面的工作。

但是,當我在創建數據庫的時候,系統報了如下的錯誤

技術分享圖片

主要錯誤的代碼如下:

1 class Tag(models.Model):
2     nid = models.AutoField(primary_key=True)
3     title = models.CharField(verbose_name=
標簽名稱, max_length=32) 4 blog = models.ForeignKey(verbose_name=所屬博客, to=Blog, to_field=nid) #錯誤行

這個錯誤的主要原因是:

在django2.0後,定義外鍵和一對一關系的時候需要加on_delete選項,此參數為了避免兩個表裏的數據不一致問題,不然會報錯:

TypeError: __init__() missing 1 required positional argument: on_delete

舉例說明:

user=models.OneToOneField(User)
owner=models.ForeignKey(UserProfile)

需要改成:

user=models.OneToOneField(User,on_delete=models.CASCADE) 

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

參數說明:
on_delete有CASCADE、PROTECT、SET_NULL、SET_DEFAULT、SET()五個可選擇的值
CASCADE:此值設置,是級聯刪除。
PROTECT:此值設置,是會報完整性錯誤。
SET_NULL:此值設置,會把外鍵設置為null,前提是允許為null。
SET_DEFAULT:此值設置,會把設置為外鍵的默認值。
SET():此值設置,會調用外面的值,可以是一個函數。
一般情況下使用CASCADE就可以了。

URL路由的問題

使用path來配置URL路由的時候,遇到了正則表達式不能使用的問題,查了一下,原來是Django 2.0的新改動,如果需要使用正則表達式可以引入

from django.urls import re_path

具體可以參照這位大神的博客。

詳細了解改動內容,可以參照官方文檔。

2018.7.7-數據庫配置方面及首頁方面的問題