1. 程式人生 > >Django web開發筆記

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'),
]