1. 程式人生 > >django 基礎

django 基礎

local loaded lec spl 指定 所有 字典 -s file

創建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 基礎