django社交类程序笔记(11)form表单验证及个人资料修改

本节包含三个内容
cookie,session知识,
form表单验证,
个人资料修改

1.Cookie、 Session 机制剖析

  1. 产⽣过程
    1. 浏览器: 向服务器发送请求
    2. 服务器: 接受并创建 session 对象 (该对象包含⼀个 session_id)
    3. 服务器: 执⾏ views 函数, 并得到⼀个 response 对象
    4. 服务器: 执⾏ response.set_cookie(‘sessionid’, session_id) 将 session_id 写⼊ cookie
    5. 服务器: 将 response 传回浏览器
    6. 浏览器: 读取 response 报⽂, 从 Cookies 取出 session_id 并保存
  2. 后续请求
    1. 浏览器: 向服务器发送请求, session_id 随 Cookies ⼀同发给 Server
    2. 服务器: 从 Headers 的 Cookies 中取出 session_id
    3. 服务器: 根据 session_id 找出对应的数据, 确认客户端身份
  3. Django 中的代码实现
    https://blog.csdn.net/qq_36710311/article/details/105176325参考这里。

2 form 表单验证

POST = dict() 字典类型
form = TestForm(POST)验证
form.is_valid() 返回false或者True
form.errors 查看验证错误信息
form.cleaned_data 清洗数据

项目中 user文件夹下创建forms.py,继承forms.ModelForm

from django import forms

from user.models import Profile


class ProfileForm(forms.ModelForm):
    class Meta:
        model = Profile
        fields = [
            'dating_sex', 'location', 'min_distance',
            'max_distance', 'min_dating_age', 'max_dating_age',
            'vibration', 'only_matche', 'auto_play'
        ]

    def clean_max_dating_age(self):  # 清洗必须clean_加字段名。
        cleaned_data = super().clean()  # 这里也必须使用cleaned_data
        min_dating_age = cleaned_data.get['min_dating_age']
        max_dating_age = cleaned_data.get['max_dating_age']
        if min_dating_age > max_dating_age:
            raise forms.ValidationError('min_dating_age > max_dating_age')

这里注意clean_data用法,还有字段验证错误后不执行后面字段,需要注意顺序,这里最大年龄必须大于最小年龄。
在common文件夹下的error.py中增加

PROFILE_ERROR = 1002

修改api.py中的函数,修改个人资料:

def modify_profile(request):
    """修改个人资料"""
    form = ProfileForm(request.POST)
    if form.is_valid():
        form.save()
        return render_json(None)
    else:
        return render_json(form.errors, error.PROFILE_ERROR)

面试小内容:
复杂度概念:空间复杂度,时间复杂度,
由低到高:O(1),O(log2·n),O(n), O(n*log2·n), O(n2), O(n3),O(nk),O(2n)
数据结构:二叉树,堆 ,栈,队列
算法:二分查找,快速排序,堆排序
推荐书籍:
《算法珠玑》,《linux 运维最佳实践》,《python自动化运维》,《flaskweb开发》,《gevent指南》,《python隐藏的玄机》

发布了89 篇原创文章 · 获赞 7 · 访问量 2196

猜你喜欢

转载自blog.csdn.net/qq_36710311/article/details/105174946
今日推荐