通過Django來對數據庫進行增刪改查
1 首先創建類,在app應用程序里面的model模塊里面創建類,寫好數據庫信息,方便我們待會初始化:
2 創建在django項目里面的settings里面添加app程序()在settings里面的INSTALLED_APPS里面)
3
python manage.py makemigrations
4 python manage.py migrate
django 常用命令:
django :
第一條命令是創建項目名,第二條是創建app,第三個同步(創建)數據庫
python3 manage.py startproject project_name
python3 manage.py startapp app_name
python3 manage.py syncdb
拿models里面的一個類舉例:
我們先看models創建一個數據庫的方法:
class WebGroup(models.Model): name = models.CharField(max_length=64) brief = models.CharField(max_length=255,blank=True,null=True) owner = models.ForeignKey(UserProfile) admins = models.ManyToManyField(UserProfile,blank=True,related_name='group_admins') members = models.ManyToManyField(UserProfile,blank=True,related_name='group_members') max_members = models.IntegerField(default=200) def __str__(self): return self.name
同步數據庫
python manage.py makemigrations python manage.py migrate 本人使用的是django1.9.5版本 2.創建超級管理員 python manage.py createsuperuser 3.運行django python manage.py runserver 8000
1 增加數據
我們在views里面隨便定義一個方法名,然后下如以下代碼 ,寫入以下代碼:
if request.method == "POST":
input_em = request.POST['em'] # em 和 pwd都是和form表單里面的一一對應
input_pw = request.POST['pwd']
print(input_pw,input_em)
models.UserInfo.objects.create(email=input_em, pwd=input_pw) #models調用的是先前創建好的數據庫
當出現這個報錯提示的時候,我們應該在html頁面上的form表單里面添加這行內容: {% csrf_token %}
<form action="/index/" method="post">
{% csrf_token %}
<input type="text" name="em"/>
<input type="text" name="pwd"/>
<input type="submit" value="添加"/>
</form>
2 刪除數據
models.UserInfo.objects.filter(email=input_em).delete()
3 更改數據:
models.UserInfo.objects.filter(email=input_em).update(pwd='nihao')
4 查看數據:
我們需要在HTML頁面里嵌套jinja2的代碼,下面代碼能夠在表單里面根據后台數據庫的內容來展示,代碼如下:
# 前端代碼的jinja2語法如下 {% for line in user_info_list %} # user_info_list 實際上就是從models里面獲取的對象。 <tr> <td>{{ line.email }}</td> # 每個遍歷出來的對象都有emmail這個屬性,因為我們在定義這個表的時候就定義了email字段 <td>{{ line.pwd }}</td> </tr> {% endfor %}
后端django,views里面的方法
def index(request): # 數據庫獲取數據,數據和HTML渲染 from app01 import models user_info_list = models.UserInfo.objects.all() return render(request,'index.html',{'user_info_list':user_info_list})
