Django基礎
Django採用了MVC的軟件設計模式,即模型M,視圖V和控制器C。
- 安裝django: pip install django=版本
- 新建一個目錄文件進入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'))