STATIC_URL = '/static/'html
跟靜態文件夾的名字沒有關係,默認狀況下這個前綴跟靜態文件夾名字同樣python
STATICFILES_DIRS = [mysql
os.path.join(BASE_DIR,'static')sql
]數據庫
'static':就是你的靜態文件夾路徑,能夠設置多個,會依次查找列表中全部的靜態文件路勁,找到就中止,都沒有的話返回404(資源不存在)django
<input type='submit'> <button></button>
action屬性控制提交的地址post
方式一:全路徑3d
<form action='http://127.0.0.1:8000/login/'>
方式二:只寫路勁後綴code
<form action='/login/'>
方式三:不寫(默認往當前路勁提交)orm
注意:利用a標籤href屬性能夠指定頁面跳轉的路勁,href能夠寫全路勁,可是推薦寫後綴便可
<a href='/login/' class='btn btn-success'>登入</a>
#根據客戶端請求方式的不一樣執行不一樣的邏輯代碼 def login(request): #獲取客戶端的請求方式 print(request.method) #注意是全大寫的字符串 if request.method == 'POST': return HttpResponse('ok') return render(request,'login.html')
def login(request): if request.method == 'POST': print(request.POST) #裏面存放了客戶端post提交的全部數據,能夠當作是一個大字典,{'username':['lucas'],'password':['123']} print(request.POST.get('username')) #value雖然是一個列表,可是獲取值得時候拿到的是單個元素,默認只會取列表裏的最後一個元素 print(requet.POST.getlist('username')) #一次性獲取value列表裏的全部數據,應用場景能夠是用戶的愛好,多選框 #get請求的取值方式和post同樣
DATABASES = { 'default':{ 'ENGINE':'django.db.backends.mysql', 'NAME':'day54', #庫名 'HOST':'127.0.0.1', 'POST':3306, 'USER':'root', 'PASSWORD':'123' } } #注意:鍵必須是大寫
告訴Django用pymysql替換它,默認mysqldb模塊鏈接數據庫
方式一:在項目文件夾下面的__init__.py
方拾二:在應用文件夾下的__init__.py
#固定寫法 import pymysql pymysql.install_as_Mysql()
orm:對象關係映射,簡單來講就是類對應數據庫中的一張表,類對象對應表記錄,對象的屬性對應某條記錄的值
django的orm不能自動建立庫,可是能夠自動建立表
小提示:一個django項目就使用一個庫,不要多個django項目使用一個庫
在models建立好類以後,還須要兩個命令:
python3(當前所用解釋器名稱) manage.py makemigrations:將數據庫變更記錄到文件中
python3 manage.py migrate:將數據庫變更同步到數據庫中
方式一:
user_obj = models.User.objects.create(name=username,password=password) #create方法有一個返回值,就是當前新增的數據對象自己
方式二:
user_obj = models.User(name=password,password=password) user_obj.save()
user_list = models.User.objects.all() #獲取user表全部的數據
上圖中的user_list是QuerySet對象,能夠經過點query查看獲取sql語句,QuerySet對象支持索引取值,可是不推薦,推薦使用自帶的.first()來獲取第一條數據
user_query = models.User.objects.filter(id=1) # queryset對象 user_obj = user_query.first() # 數據對象 # 當條件不存在的狀況下會返回一個空的queryset對象,推薦使用
user_obj = models.User.objects.get(id=1) # 用get能夠直接獲取到數據對象自己,可是查詢條件不存在的狀況下直接報錯,全部推薦使用filter
models.User.objects.filter(id=1).delete() # 會將queryset全部的數據對象所有刪除
方式一:
models.User.objects.filter(id=edit_id).update(name=username,password=password) #調用queryset封裝的方法,該方法是一個批量操做,會將queryset內全部的數據對象所有修改
方式二:
user_obj = models.User.objects.filter(id=edit_id).first() user_obj.name = username user_obj.password = password user_obj.save()
方式一:利用input隱藏一個標籤
<input type='hidden' name='edit_id' values='{{user_obj.pk}}'> #django中pk默認取的是主鍵字段,User表中id就是主鍵字段
方式二:GET請求攜帶
<form action='/edit/?edit_id={{user_obj.pk}}' method='post'> </form>
上述修改、刪除都是經過queryset對象點的方法完成的,會做用於內部全部的數據對象,相似於批量操做
注意:修改模型層裏面的根表相關的全部的數據以後,必須從新執行數據庫遷移命令