测开之路四十八:Django之重定向与cookie

基础配置与上一篇一致

404错误

定义一个error页面

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>错误页</title></head><body>    <h1>哎呀,出错啦!</h1></body></html>

追加一个404的视图

访问,由于开了debug模式,所以Django会捕获异常并抛出来,所以关闭debug模式再访问

把debug注释掉,并追加可访问的host:ALLOWED_HOSTS=[‘*‘],

import osimport sysfrom django.shortcuts import renderfrom django.conf.urls import urlfrom django.conf import settingsfrom django.core.management import execute_from_command_line

BASE_DIR = os.path.dirname(__file__) # 定义当前工程目录为basedir

# 设置框架配置settings.configure(    # DEBUG=True,    ALLOWED_HOSTS=[‘*‘],    SECRET_KEY=‘aaa‘,  # 用于加密的字符串    ROOT_URLCONF=__name__,  # 此配置为在当前文件里面找url映射的配置    MIDDLEWARE_CLASSES=(        ‘django.middleware.commom.CommonMiddleware‘,        ‘django.middleware.csrf.CsrfViewMiddleware‘,        ‘django.middleware.clickjacking.XFrameOptionsMiddleware‘,    ),    STATIC_URL=‘/static/‘,  # 定义静态文件的存放目录,和flask一致    STATICFILES_DIRS=(os.path.join(BASE_DIR, ‘static‘),),  # 静态文件目录,指向BASE_DIR/static(括号里的逗号不能省)    INSTALLED_APPS=(‘django.contrib.staticfiles‘,),  # Django使用静态文件需要安装即在配置中录入此信息(括号里的逗号不能省)    # 模板的配置    TEMPLATES=[{            # ‘BACKEND‘: ‘django.template.backends.django.DjangoTemplates‘,  # Django自带的模板引擎            ‘BACKEND‘: ‘django.template.backends.jinja2.Jinja2‘,  # Jinja2的模板引擎            ‘APP_DIRS‘: True,  # APP_DIRS为True则默认app下的templates目录,否则使用下一行DIRS声明的目录            ‘DIRS‘: [os.path.join(BASE_DIR, ‘templates‘)],            ‘OPTIONS‘: {}}])

# 实现访问返回访问请求中的参数def hello(request, user):   # return HttpResponse(user)    context = {        ‘user‘: user,        ‘hobbit‘: [‘看书‘, ‘写代码‘]    }    return render(request, ‘hello.html‘, context)

# 出现404 page_not_found的时候,返回error.htmldef page_not_found(request, exception, template_name= ‘error.html‘):    return render(request, template_name)handler404 = page_not_found

再访问

重定向

需要导入库(以上配置不变,把debug打开)

from django.http import HttpResponseRedirectdef redirect(request):    return HttpResponseRedirect(‘/hello/这是重定向/?message=error‘)

# 通过正则匹配url,做视图映射urlpatterns = (    # url( r‘^test/$‘, test),    url(r‘^hello/(?P<user>\w+)/$‘, hello),    url(r‘^redirect$‘, redirect),    # url(r‘^$‘, index)    )

访问redirect的时候会被重定向

cookie

以之前的test视图为例

from django.http  import JsonResponsedef test(request):    print(dir(request))    data = {        ‘path‘: request.path,        ‘method‘: request.method,        ‘scheme‘: request.scheme,        ‘host‘: request.get_host(),        ‘port‘: request.get_port(),        ‘cookies‘: request.COOKIES,        ‘get‘: request.GET,        ‘post‘: request.POST,    }    # return JsonResponse(data)    response = JsonResponse(data)    response.set_cookie(‘django‘, ‘djangoCookie‘)    return response

# 通过正则匹配url,做视图映射urlpatterns = (    url( r‘^test/$‘, test),    url(r‘^hello/(?P<user>\w+)/$‘, hello),    url(r‘^redirect$‘, redirect),    # url(r‘^$‘, index)    )

访问

使用cookie

get(‘django‘, ‘NoCookie‘):如果Django有cookie,就用Django的,如果没有,就用NoCookie

def hello(request, user):   # return HttpResponse(user)    context = {        ‘user‘: user,        ‘hobbit‘: [‘看书‘, ‘写代码‘],        ‘cookie‘: request.COOKIES.get(‘django‘, ‘NoCookie‘)    }    return render(request, ‘hello.html‘, context)

打印cookie

<html>    <head>        <link rel="stylesheet" href="/static/hello.css">        <title>django with jinja</title>    </head>    <body>        <h2>这是测试</h2>        <p>我是用户:{{ user }}</p>        {% for h in hobbit %}            <p>爱好是:{{ h }}</p>        {% endfor %}        {{ cookie }}    </body></html>

访问test/生成cookie

再访问/hello/xxx/,会把Django对应的cookie值打印出来

清除cookie再访问,会打印NoCookie

原文地址:https://www.cnblogs.com/zhongyehai/p/10947063.html

时间: 2024-11-09 08:15:07

测开之路四十八:Django之重定向与cookie的相关文章

测开之路四十九:用Django实现扑克牌游戏

用Django实现和之前flask一样的扑克牌游戏 项目结构 html <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>扎金花</title></head><body> {% for poker in player1 %} <img src="/static/poker

测开之路七十八:性能测试蓝图之视图层

from flask import requestfrom flask import jsonifyfrom flask import Blueprintfrom flask import render_templatefrom performance.logic import Logic performance = Blueprint('performance', __name__, static_folder='static', template_folder='templates', ur

测开之路七十四:python处理kafka

kafka-python地址:https://github.com/dpkp/kafka-python 安装kafka-python:pip install kafka-python 接收消息 from kafka import KafkaConsumerconsumer = KafkaConsumer('test', bootstrap_servers=['localhost:9092']) # 定义消费者for msg in consumer: print(msg) 发条消息尝试接收,结果是

测开之路二十五:彩票游戏

玩法 import random money = random.randint(0, 999) def generate_code(money): return list(set([ money[0] + money[1] + money[2], money[0]+money[2]+money[1], money[1] + money[0] + money[2], money[1] + money[2] + money[0], money[2] + money[0] + money[1], mo

测开之路七十六:性能测试蓝图之html

<!-- 继承base模板 -->{% extends 'base.html' %} {% block script %} <!-- 从cdn引入ace edter的js --> <script src="https://cdn.bootcss.com/ace/1.4.5/ace.js"></script> <script src="https://cdn.bootcss.com/ace/1.4.5/mode-python

测开之路二十六:Flask基础之最小web程序

Flask中文文档:http://docs.jinkan.org/docs/flask/ 安装Flask库 选端口号的一种方法(避免和别人选的端口冲突,小于1024的时候重新选) 最小web程序 用127.0.0.1或者localhost访问 返回html标签 原文地址:https://www.cnblogs.com/zhongyehai/p/10816624.html

测开之路三十五:css引入

CSS是一种定义样式结构,如字体.颜色.位置等的语言,被用于描述网页上的信息格式化和现实的方式.CSS样式可以直接存储于HTML网页或者单独的样式单文件.无论哪一种方式,样式单包含将样式应用到指定类型的元素的规则.外部使用时,样式单规则被放置在一个带有文件扩展名css的外部样式单文档中. css引入方式: 1.div标签 2.style标签,在head里面声明给某一个标签加样式,如果body里面的改标签没有特别声明样式,将全部展示为同一声明的样式,类似于继承与重写的关系 3.link标签:外链导

测开之路三十六:常用的css选择器

在static下新建一个css,并写入内容 /*标签选择器,label标签的颜色为红色*/label {color: red;} /*.代表类选择器,绿色*/.test {color: green;} /*#代表id选择器,黄色*/#test {color: yellow;} /*div标签下的魔偶写标签下的lable标签(相对关系),内容的颜色为蓝色*/div label {color: blue;} /*div标签下的直接的lable标签(父子关系),,灰色*/div > label {co

测开之路五十二:蓝图的用法

目录结构 html <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>蓝图渲染</title></head><body><h1>这里是蓝图渲染</h1></body></html> 子app(创建不同的蓝图,如接口测试.ui测试.性能测试)