經常使用命令:css
django-admin startproject xxx(項目名)
python3 manage.py startapp xxx(app名)
python3 manage.py runserver ip:port(ip、端口)
python3 manage.py syncdb
python3 manage.py makemigrations
python3 manage.py migrate
pip3 install django
可是我在安裝django的時候,老是遇到 Time Out錯誤,因而通過一番Goole,在使用pip3安裝django時設置超時時間便可,若是更改命令爲html
pip3 --default-timeout=1000 install -U django
方式一:命令行建立 django-admin startproject [項目名稱] #例如 django-admin startproject mysite 方式二:pycharm建立 File -> New Project ->選擇django便可
分析建立後的工程目錄結構:python
-mysite #django工程名 -manage.py #管理django程序 -mysite -__init__.py -setting.py #配置文件 -urls.py #url映射表,也叫url映射關係 -wsgi.py #遵循wsgi規範,是否記得以前的wsgiref模塊, uwsgi + ngix
下面對各個模塊解釋說明:web
manage:管理django程序sql
setting:配置文件數據庫
urls:url映射關係django
wsgi:遵循wsgi規範,是否記得以前的wsgiref模塊, uwsgi + ngix瀏覽器
python3 manage.py runserver [ip:port] #例如 python3 manage.py runserver 127.0.0.1:8000
神奇的事情發生了,瀏覽器出現了一個久違的畫面app
首先要cd到你的工程目錄下,本文則 cd mysite,而後執行命令ide
python3 manage.py startapp blog
此時工程的目錄結構以下
-mysite -blog -migrations -__init__.py -admin.py -apps.py -models.py -tests.py -views.py -mysite -__init__.py -settings.py -urls.py -wsgi.py -db.sqlite3 -manage.py
下面進行一一解釋:
migrations: 數據修改標結構
admin: django爲咱們提供的後臺管理
apps: 配置當前的app
models: ORM,建立制定的類,經過命令能夠生成數據庫結構
tests: 單元測試
views: 業務代碼
先簡單作一個登陸界面,而且記錄一下第一次建立django項目遇到的問題
建立項目,以及添加app這裏再也不贅述,上述已經作了解釋,下面上乾貨了,項目的目錄結構以下:建立了static、template 2個文件夾,一個用於存放靜態文件,一個存放模版
下面我展現一下各個文件的代碼,而後在作填坑操做:
在login.html中咱們建立了一個表單,搭建登陸界面,代碼以下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="../static/commons.css">
<style> label{ width: 80px;
} #error_info{ color: red;
}
</style>
</head>
<body>
<form action="/login/" method="post">
<p id="error_info">{{ error_msg }}</p>
<p>
<label for="username">用戶名:</label>
<input type="text" name="username" placeholder="請輸入用戶名">
</p>
<p>
<label for="username">密碼:</label>
<input type="password" name="pwd" placeholder="請輸入密碼">
</p>
<p>
<input type="submit" value="登陸">
</p>
</form>
</body>
</html>
在views中咱們建立了業務相關的操做
from django.shortcuts import render from django.shortcuts import redirect def login(request): if request.method == 'POST': username = request.POST.get('username',None) pwd = request.POST.get('pwd',None) print(username,pwd) if username == 'xm' and pwd == '123456': return redirect('https://www.baidu.com') else: return render(request,'login.html',{'error_msg': '用戶名或密碼錯誤!'}) return render(request,'login.html')
填坑操做:
坑1:
你會發現咱們在建立完項目和app後的工程目錄下,新建立了兩個文件夾,一個是static,還有一個是templates,其中static用於存放一些靜態文件,好比css,js等,templates存放一些模版,由於咱們不可能在views.py的方法中經過字符串搭建界面,一個是不方便,一個是無法調試,可是隨機而來就是若是和項目作關聯。
templates如何管理,不然一直報錯404,如何在配置呢?別怕坑我已經給你填平了,在setting.py文件中其實細心的你已經發現了有一個TEMPLATES字段,沒錯,就是在這理修改,若是你更換了目錄,也要修改這個配置文件的目錄,否側仍是404,本項目是將templates和工程目錄平級的目錄下,因此配置以下:
坑2:
在學習web的時候,咱們在html中引入外部的css時,樣式很快就是顯示出來了,但是我在static文件中建立commons.css時,在login.html中引入了,樣式卻不起做用,why?what are you fucking?,因而掐腳一算,應該仍是和配置文件有關係,因而我就嘗試了修改配置文件,發現配置文件中除了STATIC_URL = '/static/'之外沒有和路徑有關係的啊,後來通過Google大爺找到的答案,配置以下:
STATIC_URL = '/static/'是配置文件默認的配置,此時咱們須要新增靜態文件夾的路徑配置,如上圖框框所示,注意名字必須正確,並且別忘了STATICFILES_DIRS是一個元組,必須在元素後面加','
坑3:
在urls.py文件中默認配置以下:
from django.contrib import admin from django.urls import path from blog import views urlpatterns = [ path('admin/', admin.site.urls), ]
咱們的登陸頁面也要再次配置,因此咱們仿照默認配置加上本身的配置
from django.contrib import admin from django.urls import path from blog import views urlpatterns = [ path('admin/', admin.site.urls), path('login/', views.login) ]
彷佛一切準備就緒,咱們運行項目發現一切安好,效果出來了,
注意到咱們的login.html文件中表單的action了嗎?咱們寫的action='/login' method='post',意味着咱們提交給的仍是本頁面,請求方式爲post請求
當咱們填寫完信息後,點擊提交按鈕後,坑來了,報錯了,這事什麼問題,有事找Google啊,找了好半天,找到問題了,由於出如今urls.py上,
解決辦法以下:
以前咱們在urls.py中配置過login對應方法,由於咱們是根據默認配置寫的,出什麼問題?不該該啊,但是真的就是這個配置問題,問題就出如今'login/'這個斜槓上
解決辦法有兩種:
第一種: 修改urls.py,去掉path('login/', views.login)後面的斜槓,爲path('login', views.login)
第二種: 修改login.html,將<form action="/login" method="post">修改成<form action="/login/" method="post">
推薦使用第一種,統一urls.py文件的格式。
這樣文件就解決了,但是隨之而來的還有一個問題,也就是坑4了,繼續往下看吧
坑4:
在解決了坑3問題後,咱們點擊提交按鈕後,發現又報了另外一個錯,what funck your 祖宗?
幸好這個問題不是那麼噁心,不然果斷棄坑,只須要將settings.py中的一行代碼註釋,便可發送請求了。
刷新點擊「提交」按鈕,你會發現,一切是那麼美好和值得。