django 基礎
創建django 項目
django-admin startproject mysite
目錄介紹
mysite
- mysite # 對整個程序進行配置
- init
- settings # 配置文件
- url # URL對應關系
- wsgi # 遵循WSIG規範,生產環境中一般不用django自帶的wsgi,而是這個uwsgi + nginx
- manage.py # 管理Django程序:
- python manage.py
- python manage.py startapp xx
- python manage.py makemigrations
- python manage.py migrate
創建app
python manage.py startapp cmdb
cmdb:
migrations 數據修改表結構,django根據這個來判斷表是否有改動,有改動就可以通過命令更新數據庫中的表結構
admin Django為我們提供的後臺管理
apps 配置當前app
models ORM,寫指定的類 通過命令可以創建數據庫結構
tests 單元測試
views 業務代碼
創建完項目後的基本配置:
數據庫
1 DATABASES = { 2 ‘default‘: { 3 ‘ENGINE‘: ‘django.db.backends.mysql‘, 4 ‘NAME‘:‘dbname‘, 5 ‘USER‘: ‘root‘, 6 ‘PASSWORD‘: ‘xxx‘, 7 ‘HOST‘: ‘‘, 8 ‘PORT‘: ‘‘, 9 } 10 }數據庫
# 由於Django內部連接MySQL時使用的是MySQLdb模塊,而python3中還無此模塊,所以需要使用pymysql來代替
# 如下設置放置的與project同名的配置的 __init__.py文件中
import
pymysql
pymysql.install_as_MySQLdb()
模板
1 TEMPLATE_DIRS = ( 2 os.path.join(BASE_DIR,‘templates‘), 3 ) 4 #這裏就是配置模板文件夾的可以將 ‘templates’改成自己的模板文件夾配置
靜態文件
1 STATIC_URL = ‘/static/‘ 2 STATICFILES_DIRS = ( 3 os.path.join(BASE_DIR,‘static‘), 4 )定義靜態文件
路由系統:
視圖基本方法:
1 def func(request): 2 # request.method GET / POST 3 4 # http://127.0.0.1:8009/home?nid=123&name=alex 5 # request.GET.get(‘‘,None) # 獲取請求發來的而數據 6 7 # request.POST.get(‘‘,None) 8 9 10 # return HttpResponse("字符串") 11 # return render(request, "HTML模板的路徑",{"obj":obj 給前端模板傳遞參數這裏也可以用locals()傳遞所有本地變量}) 12 # return redirect(‘/只能填URL /home) 這裏就又轉發給url,然後轉給home視圖
獲取數據基本方法
request.POST
request.GET
request.FILES
獲取checkbox和select多選參數 request.POST.getlist(‘city‘)#獲取的name 上傳文件 # 上傳文件,form標簽做特殊設置增加enctype="multipart/form-data obj = request.FILES.get(‘image‘) obj.name #輸出文件名字,如果打印obj實際返回的也是文件名,因為在類中定義了__str__或__repr__ 來指定類返回的輸出,str優先級高於repr
#obj的type ===》<class ‘django.core.files.uploadedfile.InMemoryUploadedFile‘> f = open(obj.name, mode=‘wb‘) for item in obj.chunks(): f.write(item) f.close()
模板渲染基本方式:
獲取變量 <div>{{current_user}}</div> for循環 {% for k,v in user_list.items %} {{ k }}:{{ v }} {% endfor %} if判斷,註意模板語言中的空格不能少 {% if row == "zhangs" %} <li>{{ row }}</li> {% else %} <li>else 不需要end</li> {% endif %} 獲取字典或列表指定值 <a> {{ user_list.1 }}等同於list[1] </a>、 <a> {{ user_dict.k1 等同於dict[‘k1‘]}} </a> <a> {{ user_dict.k2 }} </a>
django 基礎