Django模板和Django使用cookie

- 日理万妓 2023-07-07 05:42 102阅读 0赞

文章目录

  • 本文代码已上传[代码连接轻点此处](https://download.csdn.net/download/qq\_32460819/12179139)
  • 说明:
  • 一、创建魔板
  • 二、上传数据
  • 三、创建数据上传完成提示, 使用form魔板
      1. 新建forms.py
    • 2.HTML调用forms.py
      1. views.py
    • 4 urls.py请求与反馈
  • 四、cookie
    • 1 test_cookie.html
    • 2 views.py 设置cookie
    • 3 urls.py调用
    • 4 结果

本文代码已上传代码连接轻点此处

说明:

  • 首先创建好通用魔板,即完成数据库,跟后台APP
  • 首先浏览器访问服务器, url(r’^first_test/$’, first_test), first_test先返回html界面
  • 用户在向html界面传递数据, 于是服务器根据传递的参数传递回first_test函数, 这个时候才开始处理数据
  • 处理数据包含将用户提交的数据上传到服务器
  • 因为界面包含的按钮跳转jqAjax()函数,该函数执行url=http://127.0.0.1:8000/post\_data/
  • 因此又跳转到post_data请求,
  • 而该请求仅仅将成功请求标识返回来,于是界面进行了反馈显示
  • 所以从用户请求到最终用了 1请1显(请求显示界面) 1请1显(请求数据处理既提示)

一、创建魔板

命令行:

  • 1 创建项目 django-admin startproject cookie_test
  • 2 创建后台APP python manage.py startapp App
  • 3 创建对应数据库 create database cookie_test;

修改文件

  • 1 创建文件夹cookie_test/template/ cookie_test/static/
  • 2 修改配置文件 settings.py
    INSTALLED_APPS = (App,) 刚创建的后台APP
    ‘django.middleware.csrf.CsrfViewMiddleware’, # 需要被注释
    添加 TEMPLATES{
    ‘DIRS’: [
    os.path.join(BASE_DIR, “template”.replace(“\“,’/’)),
    os.path.join(BASE_DIR, “App”.replace(“\“,’/’)),
    ],}
    数据库
    DATABASES = {
    ‘default’: {
    # ‘ENGINE’: ‘django.db.backends.sqlite3’,
    # ‘NAME’: os.path.join(BASE_DIR, ‘db.sqlite3’),
    ‘ENGINE’: ‘django.db.backends.mysql’,
    ‘NAME’ : “cookie_test”,
    ‘USER’ : ‘root’,
    ‘PASSWORD’:‘zjq’,
    ‘HOST’ :‘localhost’,
    ‘POST’ :3306,
    }
    }
    中文
    LANGUAGE_CODE = ‘en-us’改’zh-hans’ # 汉字
    静态路径
    STATIC_URL = ‘/static/’
    STATICFILES_DIRS = (
    os.path.join(BASE_DIR, “static”.replace(“\“, “/”)),
    )
  • 3 修改views.py与urls.py,创建对应HTML,浏览器请求确定魔板魔板没有问题\
  • 4 在models里面建立表Student, 将来在数据库中呈现的就是cookie_test/App_Student
  • 5 将表在admin中注册 admin.site.register(Student) # 安装表,admin请求时会显示该表
  • 6 更新数据库连接
    python manage.py validate
    python manage.py makemigrations
    python manage.py syncdb
  • 7 查看数据库 出现cookie_test/App_Student

二、上传数据

  1. <body>
  2. <form action="" method="POST">
  3. <input type="text" name="user">
  4. <input type="password" name="password">
  5. <input type="text" name="phone">
  6. <input type="submit" value="确认">
  7. </form>
  8. <body>
  9. def first_test(request):
  10. register = Register()
  11. if request.method == "POST" and request.POST:
  12. # 传递参数
  13. user = request.POST["user"]
  14. password = request.POST["password"]
  15. phone = request.POST["phone"]
  16. # 密码加密
  17. hash = hashlib.md5()
  18. hash.update(password.encode("UTF-8"))
  19. password = hash.hexdigest()
  20. # 上传数据库
  21. u = Student()
  22. u.name = user
  23. u.password = password
  24. u.phone = phone
  25. u.save()
  26. return render_to_response("first_test.html", locals())

三、创建数据上传完成提示, 使用form魔板

1. 新建forms.py

  1. from django import forms
  2. # 生成forms表单
  3. class Register(forms.Form):
  4. user = forms.CharField(max_length=32, label="用户名") # 默认显示user, 添加label显示label名
  5. password = forms.CharField(max_length=32)
  6. phone = forms.CharField(max_length=15)
  7. def clean_password(self): # 函数明命名必须clean_字段名称
  8. password = self.cleaned_data["password"] # 获取要判断的数据
  9. if password[0].isdigit(): # 判断数字
  10. raise forms.ValidationError("firs cann't be number")
  11. return password

2.HTML调用forms.py

注意将/static/js/jquery.1.11.3.min.js,随便找个网站, 下载一个就行

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>first_test</title>
  6. <script src="/static/js/jquery.1.11.3.min.js"> </script>
  7. </head>
  8. <body>
  9. <!-- <form action="" method="POST"> <input type="text" name="user"> <input type="password" name="password"> <input type="text" name="phone"> <input type="submit" value="确认"> </form> -->
  10. <form action="" method="POST">
  11. {
  12. {register}}
  13. <button onclick="jqAjax()">click</button>
  14. </form>
  15. <script> function jqAjax(){ var json_data = JSON.toString({ "for":"hello"}) $.ajax( { url:"http://127.0.0.1:8000/post_data/", //请求数据为son_data type:"POST", data:json_data, beforeSend:function(){ }, success:function(data){ if(data["statue"]=="success"){ alert("提交成功") } else{ alert("失败") } }, error:function(err){ alert(err) } } ) } </script>
  16. </body>
  17. </html>

3. views.py

  1. from django.shortcuts import render_to_response
  2. from App.models import *
  3. import hashlib
  4. from App.forms import *
  5. from django.http import JsonResponse
  6. # Create your views here.
  7. def first_test(request):
  8. register = Register()
  9. if request.method == "POST" and request.POST:
  10. # 传递参数
  11. user = request.POST["user"]
  12. password = request.POST["password"]
  13. phone = request.POST["phone"]
  14. # 密码加密
  15. hash = hashlib.md5()
  16. hash.update(password.encode("UTF-8"))
  17. password = hash.hexdigest()
  18. # 上传数据库
  19. u = Student()
  20. u.name = user
  21. u.password = password
  22. u.phone = phone
  23. u.save()
  24. return render_to_response("first_test.html", locals())
  25. def post_data(request):
  26. if request.method == "POST" and request.POST:
  27. response_data = { "statue": "success"}
  28. else:
  29. response_data = { "statue": "error"}
  30. return JsonResponse(response_data)

4 urls.py请求与反馈

  1. from django.conf.urls import include, url
  2. from django.contrib import admin
  3. from App.views import *
  4. urlpatterns = [
  5. url(r'^admin', include(admin.site.urls)),
  6. url(r'^first_test/$', first_test),
  7. url(r'^post_data/$', post_data),
  8. ]

四、cookie

cookie标识为当前用户存到的本地的验证信息, 如访问京东,第一次登陆之后,后期登陆无需在重新输入账号密码,因为cookie标识在本地, 当再次访问京东网址时, cookie会告诉京东刚用户登陆无需在登陆的一个flag

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>test_cookie</title>
  6. </head>
  7. <body>
  8. <form>
  9. </form>
  10. </body>
  11. </html>
  1. def test_cookie(request):
  2. response = render_to_response('test_cookie.html', locals())
  3. response.set_cookie("name", "for", 3600) # 在本地存放name for 为3600秒, 在这个时间内,都是以这个for用户来访问的
  4. return response

3 urls.py调用

  1. url(r'^test_cookie/$', test_cookie),

4 结果

在这里插入图片描述
在访问同一网站
在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,102人围观)

还没有评论,来说两句吧...

相关阅读

    相关 DjangoCookie Session

    3. Cookie 和 Session 会话 因为 HTTP 协议是无状态的,每次浏览器请求 `request`都是无状态的,后台服务器无法识别当前请求与上一次请求及之后

    相关 Django模板语法(django10)

    最近在折腾Django,看到官网的Django模板文章写得挺详细的,就想着翻译下以加深自己的学习印象,如果能帮助到大家我也会感到很欣慰,以下是译文。 这篇文章主要讲解了Dja

    相关 Django教程 —— Django模板

    引言 > 如何向请求者返回一个漂亮的页面呢? > > 肯定需要用到 `html、css` ,如果想要更炫的效果还要加入 `js`,问题来了,这么一堆字符串全都写到视图中

    相关 Django模板

    一、模板的组成 组成:HTML代码+逻辑控制代码 二、逻辑控制代码 1、变量:使用双大括号引起来的变量 例:<p>\{ \{name\}\}</p>

    相关 Django模板

    在前面的几节中我们都是使用简单的  django.http.HttpResponse 来把内容显示到网页上来的,本节中将讲解如何使用渲染模板的方法来显示内容 本节的