django基礎入門之搭建博客系統

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()方法

 

token %} post提交的防止python拒絕的標識

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

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章