Python 建立一個Django專案

未名w發表於2021-07-24

1 環境搭建及建立

1) 安裝Django

方法一:pip install django

方法二:Pycharm File——settings——Project——Python Interpreter——Python3.9 新增Django安裝,設定django的環境變數

3)建立Django專案

命令列至指定目錄下,django-admin startproject djangotest

4)啟動django 專案

python manage.py runserver

5)建立一個App

django-admin startapp webtest

6)關閉django

ctrl+C

 2 資料庫連線

1)定義模型:在app中的 models.py 中建立class(一個class對應一張表);

from django.db import models

 

# Create your models here.

class Topic(models.Model):

    """使用者學習的主題"""

    text=models.CharField(max_length=200) #指明字元資料型別,長度200

    date_added=models.DateTimeField(auto_now_add=True) # 建立新主題時,自動建立當前時間

 

    def __str__(self):

        return  self.text

 

class Entry(models.Model):

    """學到的有關某個主題的具體知識"""

    topic=models.ForeignKey(Topic,on_delete=models.CASCADE) # 外來鍵 級聯刪除,即刪除Topic時刪除Entry

    text=models.TextField()

    date_added=models.DateTimeField(auto_now_add=True)

 

    class Meta:

        verbose_name_plural='entries'

 

    def __str__(self):

        return f"{self.text[:50]}..."

 

2)啟用模型:在project下得seetings.py 中的INSTALLED_APPS 中新增app名稱 (要將自己app名稱放在預設前,這樣能覆蓋預設應用程式行為)

3)連線自帶sqlite資料庫

  • 命令列cd 至包含manage.py路徑下【每次修改資料後 都需要執行下面兩步遷移模型】
  • 生成資料庫遷移檔案:python manage.py makemigrations appname
  • 遷移修改資料庫:python manage.py migrate
  • 使用Django的模型管理網站 維護資料
    •  建立超級使用者
python manage.py createsuperuser
  • 向管理網站註冊模型 app路徑下 admin.py
# Register your models here.

from .models import Topic #Topic為models中建立的class名

admin.site.register(Topic) #讓Django通過管理網站管理模型

admin.site.register(Entry)
  • 管理網站管理 維護使用者、使用者組以及model

啟動網站,訪問/admin/

  • 命令列維護資料庫
    • python manage.py shell
from appname.models import classname

classname.objects.all()    #查詢該表所有例項
  • 遍歷
topics=Topic.objects.all()

for  topic in topics:

print(topic.id,topic)
  • 查詢
t=Topic.objects.get(id=1)

t.text
  • 退出
exit()

3 配置路由和頁面

 1) 對映URL

  • 在project路徑urls.py引入from django.urls import path,include,然後再urlpatterns中新增:

path('',include('webtest.urls'))

  • 在app路徑下建立urls.py 新增以下程式碼
"""定義webtest的URL模式"""

from django.urls import path

from . import views

 

# app_name='webtest' # 區別其他app同名檔案,這裡有一個問題就是在users中必須存在,在webtest中必須註釋掉

urlpatterns=[

    # 主頁

    path('',views.index,name='index') #第一引數 路由;第二個引數 views.py中對應函式;第三個引數 指定名稱

]

2)搭建view(也就是MVC中的controller)

from django.shortcuts import render # 根據檢視提供的資料渲染響應

 

# Create your views here.

def index(request): # 網站請求查詢路由到index,然後將request傳遞給函式

    """"學習筆記主頁"""

    return render(request,''index.html')

3)在app路徑下建立templates建立index.html

4 Django響應的前後端互動

    • 就是通過{%  %}程式碼塊展示後端資料,具體看 djangotest 專案程式碼
    • Django中的前後端互動式後臺強制解析,然後主要就是登入檢測,django.contrib.auth.urls需要在users的urls.py views.py(@ =login_required) 以及在settings.py設定被登入攔截找首頁(LOGIN_URL='users:login') # users:login是url配置的路由路徑

5 設定應用程式樣式

    • 安裝django-bootstrap4

pip install django-bootstrap4

  • 專案引用

settings.py 的INSTALLED_APPS 中 新增 'bootstrap4',

  • 在html中直接加class,在head中加入
{% load bootstrap4 %}

{% bootstrap_css %}

 {% bootstrap_javascript jquery='full' %}
  • 表單頁 程式碼如下
{% block content %}

    {% if form.errors %}

      <p>Your username and password didn't match.Please try again.</p>

    {% endif %}

 

    {% block page_header %}

    <h2>Log in to your account.</h2>

    {% endblock page_header %}

 

    <form method="post" action="{% url 'users:login' %}" class="form">

        {% csrf_token %}

        {% bootstrap_form form %}

        {% buttons %}

            <button name="submit" class="btn btn-primary">Log in</button>

        {% endbuttons %}

 

        <input type="hidden" name="next" value="{% url 'index' %}" />

    </form>

  {% endblock content %}
  • 不加樣式表單頁 程式碼如下
  {% block content %}

    <p><a href="{% url 'index' %}">index</a></p>

    <p>Add a new topic:</p>

    <form action="{% url 'new_topic' %}" method="post">

      {% csrf_token %}

      {{ form.as_p }}

      <button name="submit">Add topic</button>

    </form>

 

  {% endblock content %}

6 Django+Mysql+Vue

    • 看到網上那麼多教程,我相信Django+Mysql+Vue的過程應該不是那麼難了吧

相關文章