Python全栈 Web(Django框架、forms对象、cookie、session)

简介: Flask、Python、Django、框架、服务器、客户端、浏览器、交互、WEB、Python前端、CSS、JAVA、HTML、H5、PHP、JavaScript、JQuery、分布式开发、项目、flask项目、项目实战、django框架、Python项目、Python的Flask框架、Pytho.

forms模块的高级处理
    将models和forms结合到一起使用
    1.在forms.py中创建class  继承自forms.ModelForm
    2.创建一个内部类Meta来关联Model
        model  指定要关联的实体类是谁
        fields 指定从model中取出那些字段生成控件
            取值  "__all__"表示全部属性都要生控件
                 列表  声明允许生成控件的属性名
        labels 指定每个属性所关联的label  取值为字典
            label = {
                '属性名':'label文本',
                '属性名':'label文本',
            }

class RegisterForm(forms.ModelForm):
  #通过内部类Meta表示关联的信息
  class Meta:
    #1.指定关联的Model
    model = User
    #2.指定要生成控件的字段们
    fields = "__all__"
    #3.指定每个控件对应的label
    labels = {
      'uphone':'电话号码',
      'upwd':'登录密码',
      'uname':'用户名称',
      'uemail':'电子邮件',
    }

  if request.method == 'GET':
    form = RegisterForm()
    return render(request,'05-register.html',locals())

    小部件:
        什么是小部件?
            widget表示生成到页面上的控件类型以及其他的HTML属性
        常用小部件类型
            TextInput:      type="text"
            PasswordInput:  type="password"
            NumberInput:    type="number"
            EmailInput:     type="email"
            URLInput:       type="url"
            HiddenInput:    type="hidden"
            CheckboxInput:  type="checkbox"
            Textarea:       <textarea></textarea>
            Select:         <select></select>
        小部件的使用
            继承自forms.Form
                基本
                    只需要指定控件的类型
                    class RemarkForm(forms.Form):
                        属性 = forms.CharField(
                            label:'文本',
                            widget=forms.小部件类型
                        )
                高级
                    指定控件类型的基础上 还允许设置HTML的一些相关属性
                    属性 = forms.CharField(
                        label="文本"
                        widget=forms.小部件类型(
                            attrs = {
                                "html属性名":"html属性值",
                                "html属性名":"HTML属性值"
                            }
                        )
                    )

            继承自forms.ModelForm
                class xxxForm(forms.ModelForm):
                    class Meta:
                        model = User
                        fields = "__all__"
                        labels = {
                            "属性":"label"
                        }
                        widgets = {
                            "属性1": forms.小部件类型(attrs={
                            }),

                        }

class LoginForm(forms.ModelForm):
  class Meta:
    model = User
    fields = ['uphone','upwd']
    labels = {
      'uphone':'注册电话',
      'upwd':'登录密码',
    }
    #指定小部件
    widgets = {
      'upwd':forms.PasswordInput(attrs={
        'placeholder':'请输入您的密码'
      })
    }

class WidgetLoginForm(forms.Form):
  uphone = forms.CharField(label='电话号码')
  #为pwd指定小部件,显示为 密码框
  # upwd = forms.CharField(label='登录密码',widget=forms.PasswordInput)
  upwd = forms.CharField(
    label='登录密码',
    widget=forms.PasswordInput(
      attrs = {
        'placeholder':'请输入密码',
        'class':'form-control',
      }
    )
  )

cookies在Django中的实现
    django中使用cookies
        设置cookies:
            响应对象.set_cookie(key, value, expires)
              key:cookie的名字
              value:cookie的值
              expires:保存时间 以s为单位
            响应对象:
                HttpResponse()
                  resp = HttpResponse("hello")
                  resp.set_cookie(response, "xxx.html", locals())
                  return resp
                render()
        获取cookies的值:
            通过request.COOKIES 获取当前站点下对的所有的cookie的信息

def login_views(request):
  if request.method == 'GET':
    #判断uname是否存在于cookies中,如果有的话,直接提示登录成功,否则,去往09-login模板
    if 'uname' in request.COOKIES:
      return HttpResponse('您已成功登录过')
    return render(request,'09-login.html')
  else:
    # 获取用户名称和密码
    uname=request.POST['uname']
    upwd = request.POST['upwd']
    # 判断用户名称和密码的
    if uname=='wangwc' and upwd=='123456':
      # 如果用户名和密码正确的话,判断有没有勾住记住密码
      resp = HttpResponse("登录成功")
      if 'isSaved' in request.POST:
        # 如果有勾住记住密码,则将用户名称保存进cookies
        resp.set_cookie('uname',uname,60*60*24*90)
      return resp
    else:
      return HttpResponse('登录失败')

session在django中的实现:
    设置session的值:
        request.session["key"] = value
    获取session的值:
        value = request.session["key"]
    删除session的值
        del request.session["key"]
    在settings.py中设置session的相关设置
        SESSION_COOKIE_AGE
            设置 sessionID在cookies中的保存时间
            SESSION_COOKIE_AGE = 60 * 60 * 24  # 最多保存24小时
        SESSION_EXPIRE_AT_BROWSER_CLOSE
            设置关闭浏览器是则清空服务器上对应的session空间
            bool值

# 设置session
def setSession_views(request):
  request.session['uname']='wangwc'
  return HttpResponse('Set Session Succefull')

# 获取session
def getSession_views(request):
  uname = request.session['uname']
  return HttpResponse('uname:'+uname)

相关文章
|
1天前
|
数据采集 Web App开发 存储
打造高效的Web Scraper:Python与Selenium的完美结合
本文介绍如何使用Python结合Selenium,通过代理IP、设置Cookie和User-Agent抓取BOSS直聘的招聘信息,包括公司名称、岗位、要求和薪资。这些数据可用于行业趋势、人才需求、企业动态及区域经济分析,为求职者、企业和分析师提供宝贵信息。文中详细说明了环境准备、代理配置、登录操作及数据抓取步骤,并提醒注意反爬虫机制和验证码处理等问题。
打造高效的Web Scraper:Python与Selenium的完美结合
|
3月前
|
开发框架 搜索推荐 数据可视化
Django框架适合开发哪种类型的Web应用程序?
Django 框架凭借其强大的功能、稳定性和可扩展性,几乎可以适应各种类型的 Web 应用程序开发需求。无论是简单的网站还是复杂的企业级系统,Django 都能提供可靠的支持,帮助开发者快速构建高质量的应用。同时,其活跃的社区和丰富的资源也为开发者在项目实施过程中提供了有力的保障。
159 62
|
4月前
|
机器学习/深度学习 数据处理 数据库
基于Django的深度学习视频分类Web系统
基于Django的深度学习视频分类Web系统
87 4
基于Django的深度学习视频分类Web系统
|
3月前
|
API 数据库 开发者
深度剖析Django/Flask:解锁Web开发新姿势,让创意无限延伸!
在Web开发领域,Django与Flask如同两颗璀璨的星辰,各具特色。Django提供全栈解决方案,适合快速开发复杂应用;Flask则轻量灵活,适合小型项目和API开发。本文通过问答形式,深入解析两大框架的使用方法和选择策略,助你解锁Web开发新技能。
65 2
|
4月前
|
SQL 关系型数据库 数据库
优化Web开发流程:Python ORM的优势与实现细节
【10月更文挑战第4天】在Web开发中,数据库操作至关重要,但直接编写SQL语句既繁琐又易错。对象关系映射(ORM)技术应运而生,让开发者以面向对象的方式操作数据库,显著提升了开发效率和代码可维护性。本文探讨Python ORM的优势及其实现细节,并通过Django ORM的示例展示其应用。ORM提供高级抽象层,简化数据库操作,提高代码可读性,并支持多种数据库后端,防止SQL注入。Django内置强大的ORM系统,通过定义模型、生成数据库表、插入和查询数据等步骤,展示了如何利用ORM简化复杂的数据库操作。
94 6
|
4月前
|
机器学习/深度学习 监控 数据挖掘
基于Django和百度飞桨模型的情感识别Web系统
基于Django和百度飞桨模型的情感识别Web系统
75 5
|
4月前
|
NoSQL 关系型数据库 MongoDB
Django与MongoDB搭建高效的Web应用
Django与MongoDB搭建高效的Web应用
221 1
|
4月前
|
SQL Java 数据库
Django学习三:views业务层中通过models对实体对象进行的增、删、改、查操作。
这篇文章是关于如何使用Django框架的ORM系统在视图(views)层面进行数据库的增、删、改、查操作的教程。
45 0
Django学习三:views业务层中通过models对实体对象进行的增、删、改、查操作。
|
4月前
|
开发框架 前端开发 数据库
使用Django框架构建一个完整的Web应用
【10月更文挑战第2天】使用Django框架构建一个完整的Web应用
84 1
|
4月前
|
开发者 C++ Python
从零到一,Django/Flask带你走进Web开发的梦幻世界!
从零到一,Django/Flask带你走进Web开发的梦幻世界!
50 1

热门文章

最新文章

推荐镜像

更多