django基礎入門之搭建部落格系統

Javascript && Python發表於2018-10-13

Django基礎

Django採用了MVC的軟體設計模式,即模型M,檢視V和控制器C。

  1. 安裝django: pip install django=版本
  2. 新建一個目錄檔案進入cmd   啟動一個專案 django-admin startproject myblog

        dir檢視當前目錄

     3.pycharm開啟該專案

 

專案目錄介紹:

manage.py:專案管理器   與專案進行互動的命令列工具集的入口

        執行python mange.py來檢視所有命令

myblog目錄:專案的一個容器,包含專案的一些配置,不建議修改該目錄名

wsgi.py:

urls.py

Settings.py:專案的總配置檔案

# os模組就是對作業系統進行操作,使用該模組必須先匯入模組:
import os
# 專案的根目錄
BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

4.執行專案localhost:9999  python manage.py runserver 9999

 

應用目錄介紹

 

 

編寫index hello world頁面

1.Views.py:  

# 引入HttpResponse模組
from django.http import HttpResponse
# Create your views here.

def index(request):
    return HttpResponse('hello world!')

2.url.py

from blog.views import bv
urlpatterns = [
    path('admin/', admin.site.urls),
    path('index/', bv.index),
]

 Url配置

1.urls.py

#include
from django.urls import path, include
urlpatterns = [
    path('admin/', admin.site.urls),
    path('index/', include('blog.urls'))
]

2.blog應用urls.py

from django.urls import path
# 從當前模組  引入views
from . import views
urlpatterns = [
    path('home/', views.index),
    path('page/', views.page)
]

 3.Views.py

# 引入HttpResponse模組
from django.http import HttpResponse
# Create your views here.
def index(request):
    return HttpResponse('hello world!')
def page(request):
    return HttpResponse('我是page!')

 渲染templates  index.html頁面      Index.html   {{data1}}  {{data2}}  

# 渲染template頁面
def html(request):
    # render(request引數,html頁面,字典資料)
    return render(request, 'index.html', {'data1': '模板資料1', 'data2': '模板資料2'})

 

 

 

class Article(models.Model):
    # 設定admin管理系統資料預設顯示名稱
    def __str__(self):
        return self.title

注意:python3 url已廢棄改用path 正則使用re_path 如下:

# (?P<name>正規表示式)   name為這個組的別名 可以通過這個別名提取分組
# 別名article_id與響應函式views.detail中的引數article_id保持一致
re_path(r'^article/(?P<article_id>[0-9]+)$', views.detail)

超連結配置:

1.根目錄urls.py  include()第二個引數設定namespace=blog 引數

path('blog/', include('blog.urls', namespace='blog'))

2.blog應用下的urls.py

app_name = 'blog'
urlpatterns = [
	re_path(r'^article/(?P<article_id>[0-9]+)$',views.detail, name='article_page')
]

3 .html中

= {% url app_name:url_name parame %}

 <a href="{% url 'blog:article_page' article.id %}">{{ article.title }}</a>

 

'blog'= log'

Views.py: 表單提交操作

def add_action(request):
    # 獲取前端傳遞過來的文章標題和內容
    title = request.POST.get('title', 'Title')
    content = request.POST.get('content', 'content')
    # 向Article表中插入一條資料l
    models.Article.objects.create(title=title, content=content)
    # 返回首頁
    articles = models.Article.objects.all()
    return render(request, 'index.html', {'articles': articles})

 表單頁面:{% csrf_token %} post提交的防止python拒絕的標識 {% csrf_

<form action="{% url 'blog:add_action' %}" method="post">
    {% csrf_token %}
    <input type="text" name="title"/>
    <br/>
    <textarea name="content" id="" cols="30" rows="10"></textarea>
    <br/>
    <input type="submit" value="提交">
</form>

編輯部落格和新增部落格頁面共用: 思路修改時文章id是從1開始的,新增id為0

可以以此來判斷

編輯時運算元據庫時 先通過id獲取該文章物件 然後通過物件的屬性修改值 最後執行save()方法

 

 

 

 

{# django 模板會將不存在的值設定為空值 article.id等為空字串 #}
<input type="hidden" name="article_id" value="{{ article.id | default:'0' }}"/>

 

 

 

 

增強admin 

    

 

 更多過濾器用法請前往django admin官方文件瞭解

admin.py:

from django.contrib import admin

# Register your models here.
# 配置admin後臺管理系統能操作該應用資料庫
from . import models

# 建立Admin配置類 增強admin 可以調整admin後臺的一些顯示
class ArticleAdmin(admin.ModelAdmin):
    # list_display顯示其他欄位 支援列表、元組
    list_display = ('id', 'title', 'content', 'create_time')
    # 過濾器
    list_filter = ('create_time',)

# 註冊
admin.site.register(models.Article, ArticleAdmin)

token %

} post

的防止python拒絕的標識

path('blog/', include('blog.urls', namespace='blog'))

 

相關文章