django上課筆記1
一、Django目錄介紹
django-admin startproject mysite # 創建名為mysite的項目
cd mysite # 切換到該目錄下
python manage.py starapp app01 # 創建app01業務線
project
- app01
- admin Django自帶後臺管理相關配置
- modal 寫類,根據類創建數據庫表
- test 單元測試
- views 業務處理
- app02
- app03
二、路由系統
url和函數的對應關系
a. /login/ -> def login # 一 一對應(靜態)
b. /add-user/(\w+)/.html/ -> def add_user(request,a1) #加正則表達式 在視圖函數add_user中 a1接收url中(\w+)的內容(動態)
c. /add-user/(?P<a1>\w+)/(?P<a2>\w+)/ -> def add_user(request,a1,a2) # 將匹配到的\w+內容賦給指定的a1和a2(不管順序)
d. /add-user/(?P<a1>\w+)/(?P<a2>\w+)/ -> def add_user(request,*args,**kwargs) # 萬能匹配 位置參數和關鍵字參數
PS:
終止符:$
^edit$
偽靜態
url(r‘^edit/(\w+).html$‘, views.edit), # .html$結尾 sel權重比較高
e. 路由分發
在項目的 urls.py中分發
url(r‘^app01/‘, include(‘app01.urls‘)),
url(r‘^app02/‘, include(‘app02.urls‘)),
app01 urls.py
url(r‘^index.html$‘, views.index),
app02 urls.py
url(r‘^index.html$‘, views.index),
f. /add-user/(\d+)/ -> def add_user(request,a1) name=n1
根據名稱可以在 函數中 反向生成URL
url(r‘^index/(\w+)‘, views.index,name=n1),
1. 在Python代碼中
from django.urls import reverse
v = reverse(‘n1‘,args=(123,))
print(v)
url(r‘^index/(?P<a1>\w+)‘, views.index,name=n1),
from django.urls import reverse
v = reverse(‘n1‘,kwargs={‘a1‘:123})
print(v)
2.
url(r‘^login/‘, views.login,name=‘m1‘)
在HTML頁面中需要跳轉的頁面裏可以直接寫下面的代碼代替跳轉路徑
{% url "m1" %}
{% url "m1" i %} #傳值 空格加 i
三、ORM操作
Http請求:
url -> 視圖(模板+數據)
步驟:
1.去配置文件裏更改默認設置
DATABASES = {
‘default‘: {
‘ENGINE‘: ‘django.db.backends.mysql‘,
‘NAME‘:‘db3‘,
‘USER‘: ‘root‘,
‘PASSWORD‘: ‘‘,
‘HOST‘: ‘localhost‘,
‘PORT‘: ‘3306‘,
}
}
2.去__init__文件添加
import pymysql
pymysql.install_as_MySQLdb()
3.創建數據表
在app01的models.py裏邊
from django.db import models
class UserGroup(models.Model):
title = models.CharField(max_length=32) # 部門名稱
class UserInfo(models.Model):
uid = models.BigAutoField(primary_key=True) #自增和主鍵ID(也可以不設置)
username = models.CharField(max_length=32) #用戶名
passwd = models.CharField(max_length=64) #密碼
#age = models.IntegerField(default=1) #年齡
age = models.ImageField(null=True) 插入一列,可以為空值
# ug_id
ug = models.ForeignKey(‘UserGroup‘,null=True)#外鍵關聯部門的對應ID
去settings裏註冊app
INSTALLED_APPS = [
‘django.contrib.admin‘,
‘django.contrib.auth‘,
‘django.contrib.contenttypes‘,
‘django.contrib.sessions‘,
‘django.contrib.messages‘,
‘django.contrib.staticfiles‘,
‘app01‘,
]
4.C:\Users\mu\PycharmProjects\day58mysite> 終端執行命令
python manage.py makemigrations
python manage.py migrate
5.數據行的增刪改查
#增
models.UserGroup.objects.create(title=‘銷售部‘) #創建數據行
models.UserInfo.objects.create(username=‘root‘,passwd=‘123‘,age=‘20‘,ug_id=1)
#查
userinfo_list = models.UserInfo.objects.all() #獲取數據行,為Jqueryset對象
userinfo_list = models.UserInfo.objects.filter(uid=1,username=‘alex‘) #filter過濾
userinfo_list = models.UserInfo.objects.filter(uid__gt=1) # uid__gt=1 #意思為 uid大於1
userinfo_list = models.UserInfo.objects.filter(uid__lt=1) # uid__lt=1 #意思為 uid小於1
#刪
userinfo_list = models.UserInfo.objects.filter(uid=1).delete() # 刪除數據行
#改
userinfo_list = models.UserInfo.objects.filter(uid=1).update(username=‘egon‘) # 先過慮找出對應數據行再update更新新值
ORM利用pymysql第三方工具連接數據庫
默認:
SQLlite
MySQL:
mysql -> MySQLDB(修改django默認連接mySQL方式)
django上課筆記1