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>

  

posted @ 2025-05-06 21:56  铿锵有力自信且坚定  阅读(14)  评论(0)    收藏  举报