六、django应⽤实例(⼀)
做个简单应⽤,稍微复习下前⾯的知识
需求:
1. ⾸页将数据库中的⽤户数据全部展⽰,
2. 然后给每⼀个⽤户两个按钮:编辑 ,删除。
3. 能注册新⽤户
思路:
1、设计⽤户数据模型
app01/models.py⽂件内容如下
class User(models.Model):
username=models.CharField(max_length=24)
passwd=models.CharField(max_length=24)
is_deleted=models.BooleanField(default=False)
def__str__(self):
return self.username
2、设计整个系统的url
总共有4类url:
⾸页:/app01/
注册页:/app01/useradd
编辑页:/app01/useredit/⽤户id
删除:/app01/userdelete/⽤户id
编辑页和删除的url因根据⽤户id不同会有变化,所以在路由层中设置转换器匹配。
app01/urls.py⽂件内容如下:
from django.urls import path,include
from app01 import views
urlpatterns =[
path('',views.userlist,name='list'),
path('useradd',views.useradd,name='add'),
path('useredit/<int:id>',views.useredit,name='edit'),
path('userdelete/<int:id>',views.userdelete,name='delete'),
]
3、设计视图层和模板层
视图编写顺序⼀般会根据urls.py⽂件中的urlpatterns列表的顺序,对于还没⽤到的URL,其相应的视图函数可以先在views.py⽂件中定义,但函数体为pass。
⼀般在编辑视图函数的时候,也会将其使⽤的模板⽂件⼀起编辑。
视图层
完整的views.py⽂件内容:
from django.shortcuts import render,redirect,reverse
from app01 import models
# Create your views here.
def userlist(request):
user_querySet=models.User.objects.all()
django登录注册功能return render(request,'app01/user_list.html',locals())
def useredit(request,id):
hod=="GET":
user_obj=models.User.objects.filter(pk=id).first()
return render(request,'app01/user_edit.html',locals())
hod=="POST":
username=('username')
passwd=('password')
models.User.objects.filter(pk=id).update(username=username,passwd=passwd) print(username,passwd)
return redirect(reverse('list'))
def userdelete(request,id):
models.User.objects.filter(pk=id).delete()
return redirect(reverse('list'))
def useradd(request):
hod=="GET":
return render(request,'app01/user_add.html')
hod=="POST":
username=('username')
passwd=('password')
models.ate(username=username,passwd=passwd) print(username,passwd)
return redirect(reverse('list'))
模板层
⾸页的模板user_list.html⽂件内容:
<title>Title</title>
<link href="cdn.bootcss/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet">
<script src="cdn.bootcss/jquery/3.3.1/jquery.min.js"></script>
<script src="cdn.bootcss/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body>
<h1 class="text-center">数据展⽰</h1>
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<table class="table table-striped table-hover">
<thead>
<tr>
<th>ID</th>
<th>username</th>
<th>password</th>
</tr>
</thead>
<tbody>
{% for user_obj in user_querySet %}
<tr>
<td>{{ user_obj.id }}</td>
<td>{{ user_obj.username }}</td>
<td>{{ user_obj.passwd }}</td>
<td>
<a href="{% url 'edit' user_obj.id %}" class="btn btn-primary btx-xs">编辑</a>
<a href="{% url 'delete' user_obj.id %}" class="btn btn-danger btx-xs">删除</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
<a href="{% url 'add' %}" class="btn btn-primary btn-x">注册⽤户</a>
</div>
</div>
</div>
</body>
</html>
注册⽤户的模板user_add.html⽂件,因为注册⽤户和编辑的页⾯⼤体相同,可以使⽤模板继承功能,由编辑页⾯继承注册⽤户页⾯,完整内容如下:
<title>Title</title>
<link href="cdn.bootcss/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet">
<script src="cdn.bootcss/jquery/3.3.1/jquery.min.js"></script>
<script src="cdn.bootcss/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body>
{% block content1 %}
<h1 class="text-center">注册⽤户</h1>
{% endblock %}
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<form action="" method="post">
<p>username:<input type="text" name="username" class="form-control" value="{{ user_obj.username }}"></p> <p>password:<input type="text" name="password" class="form-control" value="{{ user_obj.passwd }}"></p>
<input type="submit" class="btn btn-info btn-block" value="提交">
</form>
</div>
</div>
</div>
</body>
</html>
编辑页⾯继承⾃注册⽤户,其完整的user_edit.html⽂件内容:
{% extends 'app01/user_add.html' %}
{% block content1 %}
<h1 class="text-center">编辑⽤户</h1>
{% endblock %}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论