Django的一些功能(上传,分页)3
一. model的view视图
1. url重定向
vim myapp/views.py
from django.shortcuts import redirect
def reurl(request):
return redirect(reverse('url0'))
二. Django的模版(html)
1.模版的使用
①在项目的settings.py配置文件中配置模版目录
'DIRS': [os.path.join(BASE_DIR,'templates')],
②在应用的视图文件中加载模板,并放置要输出的数据
return render(request,"目录/模版文件.html",{放置字典的数据})
③在模版文件中使用变量,标签,和过滤器等输出信息
{{变量}} {%标签%} {{变量|过滤器}}
2.模版的语法
①变量
{{ var }}
②标签
for标签
{% for ... in ... %}
{% endfor %}
if标签
{% if ... %}
{% elif ... %}
{% else ... %}
{% endif ... %}
注释标签
{% comment ... %}
内容
{% endcomment ... %}
3.过滤器
官网参考:https://docs.djangoproject.com/zh-hans/5.2/ref/templates/builtins/
转化成大写
{{变量|upper}}
{{变量|lower}}
打印时间
{{time}}
{{time|date: 'Y-m-d H:i:s w'}}
4.模块的继承(网页某块不用变)
①父模版定义(base.html)
{% block block_name %}
默认内容
{% endblock %}
②子模版继承(index.html)
{% extends “base.html” %}
5.静态文件目录(图片,css等)
vim myweb/settings.py
STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR,'static')],
三. DJango常用web功能
1. 文件上传功能
①vim myapp/views.py
def upload(request):
return render(request,"myapp/users/upload.html")
def doupload(request):
myfile = request.FILES.get("pic",None)
filename = myfile.name
if not myfile:
return HttpResponse("没有上传文件信息!")
destination = open("./static/"+filename,"wb+")
for chunk in myfile.chunks():
destination.write(chunk)
destination.close()
return HttpResponse("上传的文件: ",filename)
②vim myapp/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
#配置User表
path('users', views.indexUsers, name='indexusers'),
path('users/add', views.addUsers, name='addusers'),
path('users/insert', views.insertUsers, name='insertusers'),
path('users/del/<int:uid>', views.delUsers, name='delusers'),
path('users/edit/<int:uid>', views.editUsers, name='editusers'),
path('users/update', views.updateUsers, name='updateusers'),
path('upload', views.upload, name='upload'),
path('doupload', views.doupload, name='doupload'),
]
③vim templates/myapp/users/upload.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h2>文件上传</h2>
<form action="{% url 'doupload' %}" method="post" enctype="multipart/form-data">
{% csrf_token %}
标题名称:<input type="text" name="title"/><br/><br/>
文件名称:<input type="file" name="pic"/><br/><br/>
<input type="submit" value="上传"/>
</form>
</body>
</html>
2.分页操作,搜索
①vim myapp/views.py
def pageUsers(request,pIndex=1):
try:
## 执行数据查询,并放置到模板中
#判断搜索条件并封装
kw = request.GET.get("keyword",None)
mywhere = "" #定义一个用于存储搜索条件的变量
if kw is not None:
list = Users.objects.filter(name__contains=kw) #对name字段做包含式查询
mywhere = "?keyword=%s"%(kw) #追加搜索条件
else:
list = Users.objects.filter()
p = Paginator(list,5) #以5条数据一页实例化分页对象
#判断页码值是否有效(防止越界)
if pIndex<1:
pIndex = 1
if pIndex > p.num_pages:
pIndex = p.num_pages
ulist = p.page(pIndex)
context = {"userslist":ulist,"pIndex":pIndex,"pagelist":p.page_range,"mywhere":mywhere}
return render(request,"myapp/users/index2.html",context)
except:
return HttpResponse("没有找到对应的信息!")
②vim myapp/urls.py
添加
path('pageusers/<int:pIndex>', views.pageUsers, name="pageusers")
③vim templates/myapp/users/upload.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>用户信息管理</title>
<script>
//自定义执行信息删除提示判断,参数uu是成功的删除url地址
function doDel(uu){
if(confirm("确定要删除吗?")){
//网页跳转
window.location=uu;
}
}
</script>
</head>
<body>
<center>
{% include 'myapp/users/menu.html' %}
<h3>分页浏览用户信息</h3>
<form action="{% url 'pageusers' 1 %}" method="get">
姓名:<input type="text" size="10" name="keyword"/>
<input type="submit" value="搜索"/>
</form><br/>
<table width="800" border="1">
<tr>
<th>id号</th>
<th>姓名</th>
<th>年龄</th>
<th>电话</th>
<th>添加时间</th>
<th>操作</th>
</tr>
{% for user in userslist %}
<tr>
<td>{{ user.id }}</td>
<td>{{ user.name }}</td>
<td>{{ user.age }}</td>
<td>{{ user.phone }}</td>
<td>{{ user.addtime|date:'Y-m-d H:i:s' }}</td>
<td>
<a href="{% url 'editusers' user.id %}">编辑</a>
<a href="javascript:doDel('{% url 'delusers' user.id %}');">删除</a>
</td>
</tr>
{% endfor %}
</table>
<br/>
<a href="{% url 'pageusers' pIndex|add:-1 %}{{mywhere}}">上一页</a>
{% for p in pagelist %}
{% if pIndex == p %}
<a href="{% url 'pageusers' p %}{{mywhere}}" style="color:red;">{{p}}</a>
{% else %}
<a href="{% url 'pageusers' p %}{{mywhere}}">{{p}}</a>
{% endif %}
{% endfor %}
<a href="{% url 'pageusers' pIndex|add:1 %}{{mywhere}}">下一页</a>
</center>
</body>
</html>

浙公网安备 33010602011771号