小白学习django第五站-简易案例

Posted xnnx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小白学习django第五站-简易案例相关的知识,希望对你有一定的参考价值。

首先在setting.py文件中编写数据库配置内容

DATABASES = 
    default: 
        ENGINE: django.db.backends.mysql,
        NAME: site,
        USER: user,
        PASSWORD: 123456,
        HOST: 127.0.0.1,
        PORT: 3306,
    

 

之后在app中models.py文件编写模型映射表

from django.db import models

# Create your models here.


class BlogModle2(models.Model):
    title = models.CharField(max_length=50)  # 标题
    content = models.TextField()        # 内容

    def __str__(self):
        return ftitle=self.title, content=self.content

 

通过pycham的控制台输入

makemigrations appname
migrate appname

 

创建数据库中的表

之后进行模版渲染,在app中views.py中编写index, add, list, detail, edit这五个函数

index

from django.shortcuts import render, redirect, reverse
from django.http import HttpResponse
from .models import BlogModle2
# Create your views here.


def blog_index(request):                                # 主页函数
    return render(request, blog/demo_index.html)    # 渲染index页面
% extends ‘blog/demo_base.html‘ %

% block title %
    首页
% endblock %

% block bodyblock %
    <tr>
        <td><a href="% url ‘blog_add‘ %">添加文章</a></td>
        <td><a href="% url ‘blog_list‘ %">文章列表</a></td>
    </tr>
% endblock %

 

add

def blog_add(request):                                  # 添加页面
    if request.method == GET:                           # 如果请求为get请求
        return render(request, blog/demo_add.html)    # 渲染 add 页面
    elif request.method == POST:                        # 如果请求为post页面
        title = request.POST.get(title)                 # 获取form表单填写的标题
        content = request.POST.get(content)             # 获取form表单填写的内容
        blog = BlogModle2(title=title, content=content)     # 数据库写入
        blog.save()
        return render(request, blog/demo_add.html)    # 渲染add页面
% extends ‘blog/demo_base.html‘ %
% block title %
    添加博客
% endblock %
% block bodyblock %
    <h1>添加新文章</h1>
    <form action="" method="POST">
        % csrf_token %     # 防止跨域攻击与请求 #
#    <form action="" method="GET"> % csrf_token %#
        标题<input type="text" autocomplete="off" id="title"
                 placeholder="请输入标题" name=‘title‘ value=" blog.title "> <br> <br><br>
        内容 <textarea name="content" id="content"
                     placeholder="请输入内容" cols="30" rows="10"> blog.content </textarea>
        <button type="submit">发布博客</button>
    </form>
% endblock %

 

list

def blog_list(request):                                 # 列表页面
    blog_list = BlogModle2.objects.all()                    # 获取数据库表中所有内容
    return render(request, blog/demo_list.html, context=blog_list: blog_list) # 传递blog_list内容,渲染list页面
% extends ‘blog/demo_base.html‘ %
% block title %
    文章列表
% endblock %

% block bodyblock %
    <h1 style="margin-left: 100px">文章列表</h1>
    <table width="400px">
        <thead style="font-size:20px">
            <tr>
                <th>标题</th>
                <th>操作</th>
            </tr>
        </thead>
    <tbody>
    % for blog in blog_list %
        <tr>
            <th><a href="% url ‘blog_detail‘ blog.id %"> blog.title </a></th>
            <th><a href="% url ‘blog_edit‘ blog.id %">编辑</a> | <a href="% url ‘blog_delete‘ blog.id %">删除 </a></th>
        </tr>
    %  endfor %
    </tbody>
    </table>


% endblock %

 

detail

def blog_detail(request, blog_id):                      # 详情页面
    blog = BlogModle2.objects.get(id=blog_id)               # 获取选中数据库表中标题那条数据
    return render(request, blog/demo_detail.html, context=blog: blog)  # 渲染detail页面
% extends ‘blog/demo_base.html‘ %
% block title %
    文章详情
% endblock %
% block bodyblock %
    <h1> blog.title </h1>
     blog.content 
% endblock %

 

delete

def blog_delete(request, blog_id):                      # 删除功能
    blog = BlogModle2.objects.get(id=blog_id)               # 获取选中数据库表中标题那条数据
    if blog:                                                # 如果存在
        blog.delete()                                       # 删除
        return redirect(reverse(blog_list))               # 返回列表页面
    else:
        return HttpResponse(不存在这条博客)

 

edit

def blog_edit(request, blog_id):                    # 编辑
    blog = BlogModle2.objects.get(id=blog_id)        # 获取选中数据库中数据
    if request.method == GET:                     # 如果是GET请求
        return render(request, blog/demo_add.html, context=blog: blog)    # 渲染add页面,自动填入获取内容
    elif request.method == POST:                  # 如果是post请求
        blog.title = request.POST.get(title)      # 标题修改
        blog.content = request.POST.get(content)  # 内容修改
        blog.save()
        return redirect(reverse(blog_list))       # 重定向到list页面

 

urls.py

from django.urls import path, re_path
from . import views

urlpatterns = [
    path(index/, views.blog_index, name=blog_index),
    path(add/, views.blog_add, name=blog_add),
    path(list/, views.blog_list, name=blog_list),
    path(detail/<blog_id>, views.blog_detail, name=blog_detail),
    path(delete/<blog_id>, views.blog_delete, name=blog_delete),
    path(edit/<blog_id>, views.blog_edit, name=blog_edit),
]

 

base.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>% block title %
    
    % endblock %</title>
</head>
<body>
% block bodyblock %

% endblock %

</body>
</html>

 

以上是关于小白学习django第五站-简易案例的主要内容,如果未能解决你的问题,请参考以下文章

打怪升级之小白的大数据之旅(六十四)<Hive旅程第五站:DML基本操作>

django学习第三天

linux学习01-虚拟机VirtualBox上安装centos7,小白第一步

linux学习01-虚拟机VirtualBox上安装centos7,小白第一步

小白学习MySQL - 变通创建索引的案例一则

JSP购物车案例精简版-适合小白学习