https://docs.djangoproject.com/en/2.2/經常使用的數據路命令:python manage.py makemigrations 數據移植準備python manage.py migrate 數據移植配置顯示中文是時間區域LANGUAGE_CODE = 'zh-hans'TIME_ZONE = 'Asia/Shanghai'pip install pipenv 安裝pipenvpipenv install 建立虛擬環境在虛擬環境安裝庫使用 pipenv install *** 卸載使用 pipenv uninstall ***進入虛擬環境 pipenv shellpipenv --venv 查看虛擬環境對應解釋器的安裝目錄退出虛擬環境 exit建立項目 項目名稱mytestdjango-admin startproject mytestpython manage.py runserver 啓動服務器(在項目目錄下)python manage.py runserver 9999 改端口號建立應用:python manage.py startapp bobo 建立bobo的應用建立完成時候 首先是把應用添加到項目mytset裏面配置文件setting.py裏面的 INSTALLED_APPS裏應用的講解:migrations:數據移植(遷移)模塊admin:當前應用的後臺管理的配置文件apps.py:當前應用的配置models:數據模型模塊,建立數據表子啊這裏建立的,使用ROM框架tests:自動化測試模塊views:執行響應的邏輯代碼,代碼邏輯處理的主要地點,主要的代碼編輯區建立字段:name = models.CharField(max_length=20,verbose_name=u'用戶名')#註釋當指定字段能夠爲空的時候須要在參數後面加null= True blank = True 這兩個都要是True也能夠賦值默認值 default='',意思是當沒有值的時候默認是''定義主鍵是primary_key = True ,verbose_name='註釋用的'全部類型:'AutoField自增', 'BLANK_CHOICE_DASH空白\選項\破折號', 'BigAutoField大自動場', 'BigIntegerField大積分場','BinaryField二進制字段', 'BooleanField布爾菲爾德', 'CharField查菲爾德', 'CommaSeparatedIntegerField通訊分離的tegerfield','DateField日期字段', 'DateTimeField日期時間字段', 'DecimalField德西馬爾菲爾德', 'DurationField工期字段','EmailField郵件字段', 'Empty空的', 'Field', 'FieldDoesNotExist', 'FilePathField文件路徑字段','FloatField浮點', 'GenericIPAddressField', 'IPAddressField IP', 'IntegerField整數','NOT_PROVIDED', 'NullBooleanField空布爾', 'PositiveIntegerField正整數域','PositiveSmallIntegerField正小整數', 'SlugField', 'SmallIntegerField'小整數, 'TextField'文本字段,'TimeField時間字段', 'URLField'網站字段, 'UUIDField',作第一個響應網頁:在views裏面引用from django.http import HttpResponse建立一個函數def index(request): return HttpResponse('Hello word!')在項目mytest中的 urls配置這個函數的url開發一個Template:在web下建立一個templates目錄,在該目錄下穿件一個HTML文件在views.py中返回一個render()傳參數:第一個是request,第二個是html文件,第三個傳的是字典:key是參數名,value是傳遞的數據是後臺傳遞到模板的參數,在模板的使用是{{參數名}}來直接使用注意點:以上的有中狀況,當html文件名陳同樣,可是應用不同的時候會出現調用同一個html。這是爲了處理這個問題,在templates下建立個應用相同的文件夾,而後把html放進去以後就解決了這個問題Models介紹:ORM一個Models對應一張數據庫的表。編寫Models建立一個類繼承models.Model,一個類就是一張數據表在類中建立數據表的字段字段名=models.字段屬性(長度限制等)參考官方文檔:https://docs.djangoproject.com/en/1.10/ref/models/fields/建立好數據模型以後要映射成咱們的數據表執行python manage.py makemigrations app名(可選) 不寫就默認整個項目再執行python manage.py migrate 進行數據遷移成功以後能夠在應用下的migrstions下的文件查看查看SQl須要執行 python manage.py sqlmigrate 應用名 文件ID 查看SQL語句如 python manage.py sqlmigrate web 0001取數據庫的數據展現在html上:在views中導入數據庫from web.models import testwebdef index(request): user_name = testweb.objects.get(user='張三')#這個就是字段=值,也能夠主鍵值pk=1 return render(request, 'web/index.html',{'user_name':user_name})在html中:進行展示<h1>{{ user_name.user }}</h1><h3>{{ user_name.aihao }}</h3>admin模塊:admin是django自帶的自動化數據管理界面被受權用戶能夠直接在admin界面中管理數據庫首先是建立一個超級用戶:python manage.py createsuperuserusername = adminpassword=zyb563151登陸amdin127.0.0.1:8000/admin/登陸過程當中能夠遇到403 ,換個瀏覽器就解決問題了登陸上去以後是沒有任務數據的,須要配置數據 在應用下的admin.py裏面 是用來配置admin的導入數據庫名稱from web.models import testwebadmin.site.register(testweb)數據有了但要改一下顯示問題,讓他顯示人名稱早在models下數據庫testweb下添加一個方法__str__(self)或者__unicode__(self) -->版本不一樣不一樣return self.uesrhtml中循環展現:{% for xx in xxs %}HTML語句{% endfor %}首先是views裏面先要獲取全部的對象def index(request): user_names = testweb.objects.all() return render(request, 'web/index.html',{'user_names':user_names})#返回的是一個查詢結果的集合對象 能夠看作是一個列表HTML裏面寫Django中的超連接html中<a href後面是目標地址template 中能夠用{% url 'app_name:app_name' param %}#app_name:應用名稱 app_name:鏈接名稱 param:地址參數,如user_name其中app_name:app_name都是在url中配置第一種寫法:更urls,寫include()的第二個參數位置,namespace = 'web'第二種寫法:應用下寫在url()的第三個參數位置,name='user_name'區別是:是否使用include引用了另外一個url配置文件最後在應用的urls中加上app_name = '應用名'編輯響應函數:使用request.POST['參數名']獲取表單數據models.Article.objects.create(user,content) 建立對象Templates 過濾器寫在模板中的,屬於django的模板語言能夠修改模板中的變量,從而顯示不一樣的內容怎麼使用過濾器?{{變量 | 過濾器}}列:{{list | length}}能夠疊加 {{value | filter1 | filter2 |...}}如在編輯界面的代碼 <input type="hidden" name="user_aihao" value="{{ aihao.id | default:'0'}}"> 中的| default:'0'就是過濾器,意思就是沒有的時候我給0django shell:它是一個Python的交互式命令行程序,自動引入了咱們的項目環境,可使用它和咱們的項目進行交互怎麼使用 Django Shell?python manage.py shell好比:from web.models import testwebtestweb.objects.all() 能夠直接獲取數據主要是能夠調試 測試未知的方法好比:testweb.objects.all().values()不知道返回什麼東西,什麼格式,能夠查看admin想要在admin看見更多的信息 顯示其餘字段建立admin的配置類class testwebAdmin(admin.ModelAdmin)註冊語句後加 admin.site.register(testweb.testwebAdmin)list_display = ('user','aihao')list_display同時支出tuple和listlist_filer = ('put_time',) 過濾器更多的admin的參考https://docs.djangoproject.com/en/1.10/ref/contrib/admin/鏈接mysql用它做爲數據庫# DATABASES = {# 'default': {# 'ENGINE': 'django.db.backends.mysql',# 'NAME': '數據庫名字',# 'USER':'登陸數據庫的用戶名',# 'PASSWORD':'密碼',# 'HOST':'IP地址',# }# }還要安裝數據路的驅動pip install mysql-python放在 解釋器venv\Lib\site-packages下出來在環境下執行pip.exe install mysqlclient-1.3.13-cp37-cp37m-win_amd64.whlpython manage.py makemigrationspython manage.py migratecss js的文件配置在配置文件中加入路勁 STATICFILES_DIRS=[ os.path.join(BASE_DIR,'static')#static是文件夾放css/js等]-----------------------------------------------------------------------------------------------------------數據庫的增刪該查:查詢數據庫數據:查詢單條的數據是 變量= testweb.objects.get(pk=aihao_id) 變量= testweb.objects.filter(name='張三',age='18')# 這個像是select裏面的and查詢多條的數據是 list = testweb.objects.all() for i in list: 變量=list.name 變量=list.age 等增數據 首先是實例化一個對象 message = testweb() message.name = '李四' message.age = '19' message.save()刪除數據 在查詢數據以後跟delete() 如: 變量= testweb.objects.get(pk=aihao_id) 變量.delete() list = testweb.objects.all() for i in list: 變量=list.name.delete()----------------------------------------------------------------------------------------------------------------------HTML :placeholder='請輸入'#這是輸入框的提示信息value='{{message.name}}'#顯示name 也能夠用if elsevalue="{% if message.name=='張三' %}'我是張山{% end if%}#若是name是張三 就顯示我是張三value="{% if not message.name=='張三' %}'我不是張山{% end if%}#若是name不是張三 就顯示我不是張三value="{% ifequal message.name '張三' %}'我是張山{% end ifequal %}#若是name是張三 就顯示我是張三value="{% ifequal message.name | slice:'2' '張三' %}'我是張山{% end ifequal %}#若是前兩個name是張三 就顯示我是張三--------------------------------------------------------------------------------------------------------------------------坑:安裝的mysql8.x數據遷移的時候遇到django.db.utils.OperationalError: (2059, <NULL>)是應爲MySQL8.x採用了新的加密方式,但Django2.x並不識別此種加密,致使沒法鏈接到數據庫解決方式是cmdmysql -u root -pUSE mysql;# 修改加密方式ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';# 刷新數據庫FLUSH PRIVILEGES;在嘗試數據遷移就成功了。------------------------------------------------------------------------------------------------------------HTML中的下拉框選擇的數據咱們經常要作後臺驗證,取值方式是 <select name="ds"> <option value="是">是</option> <option value="否">否</option> </select>在views中取的是value的值ds = request.POST['ds']print(ds)