Django初識

本文閱讀注意事項

1.剛進公司的時候咱們的版本比較老舊,後來由於維護的擴展且1.8版本也開始再也不維護,今年將開始使用1.11.11版本咱們這裏也統一使用1.11.11
2.計算機名不能是中文,項目也不要用中文
3.使用前關閉瀏覽器緩存
4.必定要從右上角點擊啓動 不要右鍵運行
5.每建立一個app都把他添加到INSTALLED_APPS
6.爲了安全方式異網提交表單,咱們能夠開啓csrf中間件,可是咱們方便學習先註釋,項目完成後再開啓,在setting的MIDDLEWARE中
7.可能會有不兼容的狀況,儘可能使用python3.6
8.用django必定要保證只有一個在運行狀態  切記切記!!!!!!!
9..一個pycharm只能有一個工程
10.沒有這個url,瀏覽器會在資源後面添加/ 繼續訪問
11.在ORM中類必定必定要繼承 models.Model
12.每次修改完表以後,必須執行數據庫遷移才能起做用
13.發送ajax的按鈕必定不能放在form表單裏
14.request.user.save() # 修改密碼必定要記得保存


使用流程概述

1.安裝django並驗證是否安裝成功html

2.建立項目 建立apppython

3.關閉 csrfmysql

4.註冊appjquery

5.配置templateajax

6.配置靜態文件  詳見【靜態文件配置】sql

7.弄orm setting配置,orm, 輸入數據庫遷移命令建立表數據庫

8.學習路由層express

 

 

Django中的小細節

1.若是不想經過manage,py 來輸入命令能夠在 啓動tooldjango

2.會自動建立一個app而且註冊,後續須要手動註冊瀏覽器

3.瀏覽器匹配不上的話,就會加一個/重定向

在表單提交的時候必定action要注意前面是否加了/ 
加了就是網服務器下的資源訪問
不加是當前頁面後面的/rel去訪問

4.若是是  SyntaxError: Generator expression must be parenthesized  這個錯誤能夠修改源碼 去掉 逗號

5.request.POST 查出來至關於一個列表,get只能拿到最後一個,能夠用get_list("K")的形式 ['xzq', 'xzq']

6.query對象 沒法使用內部元素的屬性 

7.在跨表查詢中,正向查找須要用到類的屬性(非表名)

8.多對多正向查找 obj.外鍵.all()

9.若是再也不視圖層使用ORM能夠增長以下代碼:

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "day58.settings")
import django
django.setup()

 在導入models 使用

 

 

 

Django完成一次流程

1.瀏覽器發送url請求

2.經過 WSGI 拿到path 

3.進url 進行路由匹配

4.進入視圖函數

5.拿到html 文件經過本身的content字典 把裏面的Django{}進行替換

 

 

6.走一次中間件

3.
視圖函數處理具體頁面(經過jinja2語法把html頁面的一些佔位符替換程咱們的數據)再返回app
app返回結果爲服務器頁面(二進制)

 

 

 

 

 

Django是什麼

Django就是基於B/C架構的Web應用框架,由咱們python開發

Django是一個基於MVC構造的框架。不須要考慮到C主要是T模板 稱爲 MTV模式。

關於Django的下載

pip3 install django==1.11.9
驗證下載成功
 

建立項目 

django-admin startproject mysite
django-admin startapp appname

以上方法不能建立
templates
咱們將使用使用pycharm自帶的建立
 

Django內容簡單的介紹

 

django各個文件的做用

應用名
migrations 數據庫遷移記錄相關數據
admin.py django後臺管理相關
models.py 模型表相關
views.py 視圖函數相關
項目名
settings.py 配置文件
urls.py 路由與視圖函數的映射關係
templates
項目用到的全部的html文件
manage.py
django入口文件

項目中__init__做用

 

 

註釋CSRF 添加app

 在setting 中的MIDDLEWAREINSTALLED_APPS

INSTALLED_APPS裏添加添加'app01.apps.App01Config', #項目下的apps.py文件.類名
 

 寫路由

1.導入視圖函數

2.發現路徑以index開頭的就把request交給index 函數處理

 

 

  

 視圖函數

 

 

return 三件套

HttpResponse 

HttpResponse (request對象,網頁文件,替換的字典)

 

render

 

redirect

重定向新的網頁 參數url

內部傳入一個字符串參數,返回給瀏覽器。

 

靜態文件配置

若是咱們是絕對路徑導入靜態文件

用的是路由匹配

 

配置STATICFILES_DIR做用:只要是STATIC_URL  Request URL接口前綴  (好比xxx)

那麼就查找STATICFILES_DIR下的目錄開始找

 

註冊,書籍管理實例

網頁資源下的某個節點

不寫:當前頁面提交

寫了某個節點

以及 ip+端口+資源的形式 

ORM

1.在setting DATABASES={ 'default':{}} 中配置

ENGINE': 'django.db.backends.mysql',
'NAME': 'day55',  #數據庫名
'HOST':'127.0.0.1',
'PORT':3306,
'USER':'root',
'PASSWORD':'123'

  

2.替換數據庫 改成mysql的

方式1:在你的項目文件夾下面的__init__.py
方式2:也能夠在你的應用文件夾下面的__init__.py

import pymysql
pymysql.install_as_MySQLdb() # 告訴django用pymysql代替mysqldb鏈接數據庫

 

3.建立表

必定要繼承models.Model

from django.db import models

# Create your models here.
class MYSQL(models.Model):
  id=models.AutoField(primary_key=True)
      username=models.CharField(max_length=255)
  password=models.CharField(max_length=255)    

  

 

4.在配置完 models以後

能夠在class 輸入數據庫遷移命令

python3 manage.py makemigrations 將你的數據庫變更記錄到一個小本本上(並不會幫你建立表)
python3 manage.py migrate 將你的數據庫變更正在同步到數據庫中

  

 建立對象

 

對象=.表.object.create(*kwargs) 

查詢對象

對象=.表.object.filter(過濾條件)    <QuerySet [<XXX: XXX object>]>

m1=models.XXX.filter(username=username,password=password)
m1=models.XXX.all()

  

 

#建議不要使用get,get要確保 查出來對象必須只有一個,不然異常

m1=models.XXX(username=username,password=password)
m1.save()


m1=models.XXX.filter(username=username,password=password)
m1.update()

  

 

刪:

jqueryset 能夠經過delete

m1=models.XXX.objects.filter(username="我是一天個哈哈哈")
m1.delete()
相關文章
相關標籤/搜索