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

 

 

 

 

{# 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'))

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值