二、1:靜態檔案配置,並配置簡易版登入功能。
1 django中app的概念:
大學:----------------- 專案
資訊學院 ----------app01
物理學院-----------app02
****強調***:建立了app,要在配置檔案中註冊
...
2 模板路徑配置:
1 templates資料夾 (這裡面放自已寫的靜態檔案程式碼)
2 settings裡註冊一下
3 靜態檔案配置與資料庫配置:
1 靜態檔案配置:
settings.py
# 'django.middleware.csrf.CsrfViewMiddleware', # 大約在47行註釋掉
STATIC_URL = '/static/' # 預設已有的 # 建立一個static資料夾 STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'static'), # 建立的資料夾路徑(可以寫多個) ]
2 資料庫配置:
在app下的__init__.py裡寫: import pymysql pymysql.install_as_MySQLdb()
3 如果連線mysql:在setting裡配置:(記得提前建立資料庫)
'default': { 'ENGINE': 'django.db.backends.mysql', 'HOST': '127.0.0.1', 'PORT': 3306, 'USER': 'root', 'PASSWORD': 'password', 'NAME': 'dbname', }
4 orm建立表 (會建立app01_user的表中,欄位為:id,name,pwd)
django-orm:
1 不能建立資料庫(需要手動建立資料庫)
2 可以建立資料表
3 可以建立欄位
models.py
class User(models.Model): id=models.AutoField(primary_key=True) # primary_key=True 是為主鍵,AutoField:自增 name=models.CharField(max_length=32) # CharField:字串型別,max_length=32 字串最大長度為32 pwd=models.CharField(max_length=32)
5 資料庫遷移
1 python3 manage.py makemigrations ----記錄一下資料庫的變化
2 python3 manage.py migrate ----將變化同步到資料庫中
4 完整版登入功能
小知識
get:獲取資料,頁面,攜帶資料是不重要的資料(資料量有大小限制) post:往後臺提交資料
1 login.html
***重點***1 action:提交到後臺的地址三種寫法:
1 http://127.0.0.1:8000/login-
2 /login/ 推薦用!!!!!!!!
3 空
2 method post方式
<input type="submit" value="提交">或<button></button> type不可以是button <form action="http://127.0.0.1:8000/login" method="post"> <p>使用者名稱:<input type="text" name="name" class="form-control"></p> <p >密碼:<input type="password" name="pwd" class="form-control"></p> <input type="submit" value="提交"> </form>
3 檢視層:(views.py 如果選了以下方式,上面settings.py中設定的資料庫就沒用了。)
1 request.method ----前臺提交過來請求的方式
2 request.POST(相當於字典)----post形式提交過來的資料,(http請求報文的請求體重)
3 request.POST.get('name') ----推薦用get取值(取出列表最後一個值)
4 request.POST.getlist('name')-----取出列表所有的值_
5 前臺get方式提交的資料,從request.GET字典裡取
2 連結資料庫(防止注入,推薦以下寫法)
cur.execute('select * from user where name=%s and password=%s ',[name,pwd])
from django.shortcuts import render,HttpResponse import pymysql def login(request): if request.method=='GET': return render(request,'login.html') elif request.method=='POST': name=request.POST.get('name') pwd=request.POST.get('pwd') # 使用mysql 連線 < conn=pymysql.connect(host='127.0.0.1',port=3306,db='db1',user='root',password='mariadb.123') cur=conn.cursor() # sql防注入 cur.execute('select * from user where name=%s and password=%s ',[name,pwd]) user=cur.fetchone() # 從資料庫中的user 表裡,只取一條資料,返回元祖型別 if user: return HttpResponse('successful') else: return HttpResponse('fail')
3、render、redirect、HttpResponse作用
1 render--返回頁面,預設會去templates裡找,注意路徑
2 redirect--重定向
3 HttpResponse -- 本質:都是返回HttpResponse的
5 ORM介紹
1 ORM即Object Relational Mapping,全稱物件關係對映。
優點:
1 不用寫sql,不會sql的人也可以寫程式
2 開發效率高
2 缺點:
1 可能sql的效率低
3 如何使用:
如果連線mysql:在setting.py裡配置:
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': '127.0.0.1',
'PORT': 3306,
'USER': 'root',
'PASSWORD': 'password',
'NAME': 'dbname',
}
在app下的__init__.py裡寫:
import pymysql
pymysql.install_as_MySQLdb()