04-在views.py中使用class编写django项目

在views.py中使用class编写django项目

知识点:urls.py配置文件本质是URL与要为该URL调用的视图函数之间的映射表

1. 用户信息展示页

1.1 在urls.py中添加用户展示页路由

from django.conf.urls import url
from django.contrib import admin
from app01 import views

urlpatterns = [
    url(r‘^user_list/‘, views.UserList.as_view()),
]

1.2 在views.py中添加试图类UserList

from django import views
# django基础必备三件套
from django.shortcuts import render, redirect

# 导入models模块,获取数据库中的数据
from app01 import models

# 用户展示
class UserList(views.View):
    # 根据用户发送请求的方法不同,做不同的操作
    def get(self, request):
        # 查询出所有用户数据
        data = models.User.objects.all()
        # 在页面上中展示, 将页面返回给用户
        return render(request, ‘user_list.html‘, {‘users‘: data})

1.3 在templates中创建user_list.html文件

配置settings.py文件

TEMPLATES = [
    {
        ‘BACKEND‘: ‘django.template.backends.django.DjangoTemplates‘,
        ‘DIRS‘: [‘templates‘],

创建user_list.html文件,在页面上展示用户信息

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>user_list</title>
</head>
<body>
    <table border="2">
        <thead>
            <th>序号</th>
            <th>用户名</th>
            <th>密码</th>
        </thead>
        <tbody>
            {% for user in users %}
                <tr>
                    <td>{{ user.id }}</td>
                    <td>{{ user.username }}</td>
                    <td>{{ user.password }}</td>
                </tr>
            {% endfor %}
        </tbody>
    </table>
</body>
</html>

1.4 页面效果

2. 新建用户

2.1 在urls.py中添加新建用户路由

from django.conf.urls import url
from django.contrib import admin
from app01 import views

urlpatterns = [
    url(r‘^user_list/‘, views.UserList.as_view()),
    url(r‘^add_user/‘, views.AddUser.as_view()),
]

2.2 在用户展示页,添加a标签,以便跳转到新建用户页面

    <button>
        <a href="/add_user/" style="text-decoration: none">新增用户</a>
    </button>

2.3 在templates中创建add_user.html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>add_user</title>
</head>
<body>
<form action="" method="post">
    <input type="text" name="username" placeholder="用户名"><br>
    <input type="password" name="password" placeholder="密码"><br>
    <button>提交</button>
</form>
</body>
</html>

2.4 在views.py中添加试图类AddUser

# 新增用户
class AddUser(views.View):
    # 根据用户发送请求的方法不同,做不同的操作
    def get(self, request):
        # 当用户请求为GET时,返回add_user.html页面
        return render(request, ‘add_user.html‘)

    def post(self, request):
        # 当用用户请求为POST时,获取用户在页面提交的数据
        username = request.POST.get(‘username‘)
        password = request.POST.get(‘password‘)
        # 在数据库创建,新的用户
        models.User.objects.create(username=username, password=password)
        # 跳转到用户信息展示页面
        return redirect(‘/user_list/‘)

3. 删除用户

3.1 在urls.py中添加删除用户路由

from django.conf.urls import url
from django.contrib import admin
from app01 import views

urlpatterns = [
    url(r‘^user_list/‘, views.UserList.as_view()),
    url(r‘^add_user/‘, views.AddUser.as_view()),
    url(r‘^del_user/‘, views.DelUser.as_view()),
]

3.2 在用户展示页面user_list.html中添加删除用户的a标签

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>user_list</title>
</head>
<body>
    <table border="2">
        <thead>
            <th>序号</th>
            <th>用户名</th>
            <th>密码</th>
            <th>操作</th>
        </thead>
        <tbody>
            {% for user in users %}
                <tr>
                    <td>{{ user.id }}</td>
                    <td>{{ user.username }}</td>
                    <td>{{ user.password }}</td>
                    <td>
                        <a href="/del_user/?id={{ user.id }}">删除</a>
                    </td>
                </tr>
            {% endfor %}
        </tbody>
    </table>
    <button>
        <a href="/add_user/" style="text-decoration: none">新增用户</a>
    </button>
</body>
</html>

3.3 在views.py中添加试图类DelUser

# 删除用户
class DelUser(views.View):
    # 根据用户发送请求的方法不同,做不同的操作
    def get(self, request):
        # 获取URL中提交的数据,获得id对应值
        del_id = request.GET.get(‘id‘)
        # 在数据库中通过id字段获取数据,并删除
        models.User.objects.filter(id=del_id)[0].delete()
        # 跳转到用户信息展示页面
        return redirect(‘/user_list/‘)

4. 编辑用户

4.1 在urls.py中添加编辑用户路由

from django.conf.urls import url
from django.contrib import admin
from app01 import views

urlpatterns = [
    url(r‘^user_list/‘, views.UserList.as_view()),
    url(r‘^add_user/‘, views.AddUser.as_view()),
    url(r‘^del_user/‘, views.DelUser.as_view()),
    url(r‘^edit_user/‘, views.EditUser.as_view()),
]

4.2 在用户展示页面user_list.html中添加编辑用户的a标签

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>user_list</title>
</head>
<body>
    <table border="2">
        <thead>
            <th>序号</th>
            <th>用户名</th>
            <th>密码</th>
            <th>操作</th>
        </thead>
        <tbody>
            {% for user in users %}
                <tr>
                    <td>{{ user.id }}</td>
                    <td>{{ user.username }}</td>
                    <td>{{ user.password }}</td>
                    <td>
                        <a href="/del_user/?id={{ user.id }}">删除</a>
                        <a href="/edit_user/?id={{ user.id }}">编辑</a>
                    </td>
                </tr>
            {% endfor %}
        </tbody>
    </table>
    <button>
        <a href="/add_user/" style="text-decoration: none">新增用户</a>
    </button>
</body>
</html>

4.3 在templates中创建edit_user.html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>edit_user</title>
</head>
<body>
<form action="" method="post">
    <input type="text" name="username" placeholder="{{ user.username }}"><input name="edit_id" value="{{ user.id }}" style="display: none"></input><br>
    <input type="password" name="password" placeholder="密码"><br>
    <button>提交</button>
</form>
</body>
</html>

4.4 在views.py中添加试图类DelUser

# 编辑用户
class EditUser(views.View):
    # 根据用户发送请求的方法不同,做不同的操作
    def get(self, request):
        # 获取URL中提交的数据,获得id对应值
        edit_id = request.GET.get(‘id‘)
        # 在数据库中通过id字段获取数据
        edit_user = models.User.objects.filter(id=edit_id)[0]
        # 在编辑用户页面返回用户
        return render(request, ‘edit_user.html‘, {‘user‘: edit_user})

    # 当用用户请求为POST时,获取用户在页面提交的数据
    def post(self, request):
        # 获取用户提交过来的数据,通过edit_id查找到需要修改的用户
        edit_id = request.POST.get(‘edit_id‘)
        edit_user = models.User.objects.filter(id=edit_id)[0]
        # 获取用户在页面提交的修改数据,并且在数据中修改
        edit_user.username = request.POST.get(‘username‘)
        edit_user.password = request.POST.get(‘password‘)
        # 将改动同步到数据库
        edit_user.save()
        # 编辑成功,跳转到用户展示页面
        return redirect(‘/user_list/‘)

  

原文地址:https://www.cnblogs.com/gongniue/p/10838001.html

时间: 2024-10-09 11:45:46

04-在views.py中使用class编写django项目的相关文章

django中将views.py中的python方法传递给html模板文件

常规的模板渲染 from django.db import models # Create your models here. class ArticalType(models.Model): caption = models.CharField(max_length=16) class Category(models.Model): caption = models.CharField(max_length=16) class Artical(models.Model): title = mo

一 .Django 视图Django views.py中的 FBV(函数) CBV(类)

https://www.cnblogs.com/yuanchenqi/articles/8715364.html     Python CBV和FBV介绍 https://www.cnblogs.com/lovershowtime/p/11353499.html https://www.cnblogs.com/smail-bao/p/9646736.html       Python CBV和FBV实例 https://www.cnblogs.com/tfzz/p/11544702.html 

Django视图层(views.py)

视图函数 接受Web请求并且返回Web响应.由此,视图函数应该接收请求对象HttpRequest,并返回响应对象HttpResponse. request django将请求报文中的请求行.首部信息.内容主体封装成 HttpRequest 类中的属性. request.scheme # 请求的协议,一般为http或者https,字符串格式(以下属性中若无特殊指明,均为字符串格式)request.body   #http请求的主体,二进制格式.request.path        # 所请求页面

Django基础之视图层(views.py)和模板层

目录 Django基础之视图层(views.py)和模板层 视图层 JsonResponse对象 form表单上传文件 FBV与CBV 即CBV源码分析 django settings源码分析及实际应用 模板层 模板传值 过滤器( | ) 常用内置过滤器 其他过滤器(了解) 标签 if判断 for循环 with标签 csrf_token标签 自定义过滤器和标签 自定义过滤器 自定义标签 自定义过滤器和标签的区别 模板的继承 模板的导入 Django基础之视图层(views.py)和模板层 视图层

python例子-Django项目中的模版特性

一.在网页上显示一个字符变量 在views.py中定义处理函数:(记得在urls.py中绑定URL) #coding: utf-8 #这里如果不指定utf-8的话,汉字输出就会报编码错误. from django.shortcuts import render def home(request): string = u"一个中文字符" return render(request, 'home.html', {'string': string}) 在templates模版文件夹下的模版文

Django 项目中设置缓存

一.配置文件settings.py中 # 设置django缓存存放位置为redis数据库,并设置一个默认(default)选项,在redis中(配置文件/etc/redis/redis.conf)开启了RDB持久化储存 # pip install django-redis, 然后在视图中可以通过 from django_redis import get_redis_connection 这个方法和redis数据库进行连接 CACHES = { "default": { "BA

django项目中购物车的实现

对于做项目而言,最重要的是分析清楚自己负责模块的思路,确定思路后,把每一步实现的步骤确定后,根据步骤,去实现代码,测试. 购物车的逻辑:    登录用户可以添加购物车,未登陆用户页可以添加到购物车    登陆用户的保存user.id sku_id count selected      保存在redis中,以hash和set两种方式保存    未登陆用户保存sku_id count selectd  保存再cookie中    cart = {            sku_id:{count:

使用TDD理解views.py与urls.py的关系

首先必须对MVC的概念有初步的认识,django也遵循这样一套规范,views.py相当于视图函数,是整个架构中的处理引擎,而urls.py的作用就是将用户请求送入这样的引擎. 项目结构: urls.py: from django.conf.urls import include, url from django.contrib import admin urlpatterns = [ # Examples: #url(r'^$', 'mysite.views.home', name='home

Django-编写Views.py

polls/views.py views中定义三个方法 def detail(request, question_id): return HttpResponse("You're looking at question %s." % question_id) def results(request, question_id): response = "You're looking at the results of question %s." return Http