美文网首页
Day7-课堂笔记-Django7

Day7-课堂笔记-Django7

作者: 晓晓的忍儿 | 来源:发表于2018-09-18 17:23 被阅读0次

    1.分页

    设置url
    user->urls:添加

    url(r'^manager/',views.manager,name='manager')
    

    在views中创建manager函数
    使用Paginator对数据进行分组

    def manager(request):
        if request.method=='GET':
            # 获取路径中page的数值
            page_number=int(request.GET.get('page',1))
            # managers=Users.objects.all()[3*(page_number-1):3*page_number]
            managers=Users.objects.all()
    
            # 使用Paginator将数据切割,下列是3个为一组
            paginator=Paginator(managers,3)
            # 返回第几组数据
            page=paginator.page(page_number)
    
            return render(request,'manager.html',{'page':page})
    
    

    创建manager.html并设计网页

    {% extends 'base_main.html' %}
    {% block title %}
    用户管理页面
    {% endblock %}
    {% block content %}
        <p>当前注册的账号</p>
        <table>
            <thead>
                <th>id</th>
                <th>用户名</th>
                <th>创建时间</th>
                <th>修改时间</th>
            </thead>
            <tbody>
                {% for manager in page %}
                    <tr>
                        <td>{{manager.id}}</td>
                        <td>{{manager.username}}</td>
                        <td>{{manager.create_time }}</td>
                        <td>{{manager.operate_time }}</td>
                    </tr>
                {% endfor %}
            </tbody>
        </table>
    <p>当前页:{{page.number}}</p>
    <p>页码:
        {% for i in page.paginator.page_range %}
            <a href="{% url 'user:manager' %}?page={{i}}">{{i}}</a>
        {% endfor %}
    </p>
    <p>
        {% if page.has_previous %}
        <a href="{% url 'user:manager' %}?page={{page.previous_page_number}}">上一页</a>
        {% endif %}
        {% if page.has_next %}
        <a href="{% url 'user:manager' %}?page={{page.next_page_number}}">下一页</a>
        {% endif %}
    </p>
    {% endblock %}
    
    

    2图像等文件传输

    1)文件的添加和查询路径

    • djg1->settings:末尾添加
    MEDIA_URL='/media/'
    MEDIA_ROOT=os.path.join(BASE_DIR,'media')
    
    • 创建于djg1同级的文件夹media
    • 在djg1->urls:末尾添加静态路由和路径
    urlpatterns+=static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
    
    

    2)文件添加

    • 在user->models->Users中添加:
        icon=models.ImageField(upload_to='upload',null=True,verbose_name='头像')
    
    
    • templates->register.html

    将enctype="multipart/form-data"添加进
    <form action="" method="post" enctype="multipart/form-data">

    在表单种添加
    <p>头像:<input type="file" name="icon"></p>

    • user->views.py->register函数:添加如下
      将request.FILES添加进
    form=UserForm(request.POST,request.FILES)
    

    将icon=request.FILES.get('icon')加进

    Users.objects.create(username=form.cleaned_data['username'],
                                     password=password,
                                     icon=request.FILES.get('icon'))
    

    user->forms.py->UserForm:中添加

    icon=forms.ImageField(required=True,
                              error_messages={
                                  'required':'文件未传'
                              })
    

    3)文件查询

    • user->urls->urlpatterns:中添加

    url(r'^manager/',views.manager,name='manager')

    • 在templates->index.html->content中添加

    <p>图片:<img src="/media/{{user.icon}}"></p>

    3.session校验

    • 用session给cookie设值,给user_ticket表设值

    request.session['user_id'] = user.id

    • 设值session过期时间

    方法一:在djg2->settings:末尾添加
    SESSION_SERIALIZER='django.contrib.sessions.serializers.PickleSerializer'
    在user->views->login中添加
    request.session.set_expiry(timedelta(days=2))
    该方法针对天数

    方法二:
    在user->views->login中添加
    request.session.set_expiry(100)
    该方法只针对秒

    • 使用request.session['user_id']完成装饰器的功能
    def is_login(func):
        def check(request):
            try:
                # 获取session中已保存的user_id值
                request.session['user_id']
            except:
                # 跳转到登录
                return HttpResponseRedirect(reverse('user:login'))
            return func(request)
        return check
    
    • 删除session和cookie

    方法一:
    request.session.flush()

    方法二:
    session_key=request.session.session_key
    request.session.delete(session_key)

    4.csrf_token

    在templates->login中使用{% csrf_token %}
    能防止403错误,在不注释'django.middleware.csrf.CsrfViewMiddleware',的情况下

    相关文章

      网友评论

          本文标题:Day7-课堂笔记-Django7

          本文链接:https://www.haomeiwen.com/subject/tttmnftx.html