Django web開發筆記
一、Django開發環境搭建:
1.安裝python:django可運行於版本python 2.7、3.x
2.安裝相應的IDE
3.安裝pip:sudo apt-get install python-pip(linux為例)
4.安裝django:1)pip安裝:sudo pip install Django(linux為例)
2)原始碼安裝:網上找教程
5.建立django專案:django-admin startproject projectname(這裡可以選擇自己要建立專案的資料夾)
二、Django建立工程及應用
1.工程目錄詳解
manage.py:管理專案---包括資料庫建立、伺服器執行、測試。。。
mysite目錄:
settings.py:配置檔案:應用。中介軟體、資料庫、靜態目錄等。。
urls.py:URL對映配置檔案:決定一個url訪問被哪個程式(函式)呼叫。。
wsgi.py:python應用程式或框架和web伺服器之間的介面
2.建立應用(django中使用應用來分割功能)
2.1建立應用blog:$python manage.py startapp blog
2.2新增blog應用:mysite/setting.py->INSTALLED_APPS新增相應的應用名即可(我這裡是bikeFauleDia)
3.應用目錄詳解:
views.py:相應邏輯函式用來跳轉頁面或功能處理,即相應客戶http請求,進行邏輯處理,返回給使用者html頁面
models.py:對映資料庫中的表
admin.oy:admin相關操作
test.py:測試相關
templates:用來成才html頁面。返回給使用者html,是由資料(模型)和模版渲染出來的
4、http請求響應過程
5、資料庫連線:
1、在settings.py
檔案中設定預設連線資料庫的方式(注意settings.py
頭部加編碼)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', #資料庫型別
'NAME': 'bikeData', #資料庫名字
'USER': 'root', #使用者名稱
'PASSWORD': 'helloworld', #密碼
'HOST': '127.0.0.1', #伺服器地址
'PORT': '3306', #埠
}
}
2、在元件(App
)目錄下面都有一個models.py
來寫本元件(App
)的資料模型(以建立應用使用者名稱和密碼為例)
from django.db import models
# Create your models here.
class User(models.Model):
username = models.CharField(max_length=50)
password = models.CharField(max_length=50)
3、建立對映檔案:python manage.py makemigrations 元件名稱
4、將對映檔案中的對映到資料庫中:python manage.py migrate 元件名稱
補充:
一、編寫Models
二、設定html中css/js等外鏈樣式的時候:
首先在head中載入 {% load staticfiles %}
將css/js檔案存放如static檔案包內
然後將所要連結的物件改寫成django格式: <link rel="stylesheet" href="{% static 'css/base.css' %}">
Django中頁面超連結跳轉:
最後一個param是引數,有就傳,沒有就不穿。
三、django實現簡單的登入驗證
views.py中:
from django.shortcuts import render
# from django.http import HttpResponse
# from django import forms
from bikeFauleDia.models import User
# from django.http.response import HttpResponseRedirect, JsonResponse
from functools import wraps
# Create your views here.
#check_login用來判斷是否登入過,並一直譯器的方式過濾頁面
def check_login(f):
@wraps(f)
def inner(request,*arg,**kwargs):
if request.session.get('is_logion')=='1':
return f(request,*arg,**kwargs)
else:
return render(request,'BikeFaultDiagnosis/login.html')
return inner
def login(request):
print(request.method)
# labers=False
if request.method=='POST':
username=request.POST.get('username') #獲取頁面使用者名稱資訊
password=request.POST.get('password')
user=User.objects.filter(username=username,password=password) #和資料庫中使用者資訊對比
print(user)
if user:
labers=False
request.session['is_logion']='1' #設定session資訊用來驗證登入情況
request.session['user_id']=user[0].id
return render(request,'BikeFaultDiagnosis/index.html',{'labers':labers})
else:
labers=True
return render(request,'BikeFaultDiagnosis/login.html',{'labers':labers})
return render(request,'BikeFaultDiagnosis/login.html')
#=================================
#========================================
@check_login #裝飾器,用來驗證是否登入
def index(request):
return render(request,'BikeFaultDiagnosis/index.html')
urls.py中:
from django.urls import path
from . import views
app_name='bikeFauleDia'
urlpatterns = [
path('index/', views.index,name='index'),
path('carContrl/', views.carContrl,name='carContrl'),
path('mapp/', views.mapp,name='mapp'),
path('static/', views.static,name='static'),
path('table1/', views.table1,name='table1'),
path('message/', views.message,name='message'),
path('login/', views.login,name='login'),
]