sign/templates/index.html
其中 :
"en"> "UTF-8"> Title 发布会管理"post"> <input name="username" type="text" placeholder="username"> <input name="password" type="password" placeholder="password"> id="btn" type="submit">登录
Django 正对CSRF 的保护错误是生成的每个表单中放置一个自动生成令牌。通过这个令牌胖墩POST请求是否来自同一个网站。form 添加 { % csrf_token %}
"en"> "UTF-8"> Title 发布会管理"post"> <input name="username" type="text" placeholder="username"> <input name="password" type="password" placeholder="password"> id="btn" type="submit">登录 {% csrf_token %}
Cookie 机制 :
Cookie 分发通过拓展Http 协议来实现,服务器通过在http 的响应头中加上一行特殊的指示来提示浏览器按照只是生成相应的Cookie.
Session机制: Session 机制 是一种服务器的机制,服务器使用一种雷士与散列表的结构,保存信息。
Cookie 使用
event_manage.html
"en"> "UTF-8"> Title Login Success ! "float:right;"> 嘿 {{ user }} 欢迎
sign/views.py
设置cookie 的值
response= HttpResponseRedirect('/event_manage/') # 重定向 response.set_cookie('user',username,3600) # 添加浏览器 return response
# 发布会管理 --取出cookie 的值 def event_manage(request): username=request.COOKIES.get("user","")# 读取浏览器cookie return render(request, "event_manage.html",{"user":username})
from django.shortcuts import render # Create your views here.from django.http import HttpResponsefrom django.http import HttpResponse, HttpResponseRedirect # 定义inex 函数,通过HttpResponse 类向客户端返回字符创def index(request): # return HttpResponse("Hello Django!") # 使用Django 的render函数 return render(request, "index.html") def login_action(request): if request.method == "POST": username = request.POST.get('username', "") # 字段对应表单的input属性 password = request.POST.get('password', '') if username == 'admin' and password == "admin123": # return HttpResponse('login success') response= HttpResponseRedirect('/event_manage/') # 重定向 response.set_cookie('user',username,3600) # 添加浏览器 return response else: return render(request, "index.html", {'error': 'username or password error!'}) # 发布会管理def event_manage(request): username=request.COOKIES.get("user","")# 读取浏览器cookie return render(request, "event_manage.html",{"user":username})
from django.shortcuts import render # Create your views here.from django.http import HttpResponsefrom django.http import HttpResponse, HttpResponseRedirect # 定义inex 函数,通过HttpResponse 类向客户端返回字符创def index(request): # return HttpResponse("Hello Django!") # 使用Django 的render函数 return render(request, "index.html") def login_action(request): if request.method == "POST": username = request.POST.get('username', "") # 字段对应表单的input属性 password = request.POST.get('password', '') if username == 'admin' and password == "admin123": # return HttpResponse('login success') response= HttpResponseRedirect('/event_manage/') # 重定向 #response.set_cookie('user',username,3600) # 添加浏览器 request.session['user']=username # 将session 信息记录到浏览器 return response else: return render(request, "index.html", {'error': 'username or password error!'}) # 发布会管理def event_manage(request): #username=request.COOKIES.get("user","")# 读取浏览器cookie username=request.session.get("user","") # 读取浏览器session return render(request, "event_manage.html",{"user":username})
return super().execute(sql, params) File "D:\software\python3\anconda3\Lib\site-packages\django\db\backends\utils.py", line 67, in execute return self._execute_with_wrappers(sql, params, many=False, executor=self._execute) File "D:\software\python3\anconda3\Lib\site-packages\django\db\backends\utils.py", line 76, in _execute_with_wrappers return executor(sql, params, many, context) File "D:\software\python3\anconda3\Lib\site-packages\django\db\backends\utils.py", line 80, in _execute with self.db.wrap_database_errors: File "D:\software\python3\anconda3\Lib\site-packages\django\db\utils.py", line 89, in __exit__ raise dj_exc_value.with_traceback(traceback) from exc_value File "D:\software\python3\anconda3\Lib\site-packages\django\db\backends\utils.py", line 84, in _execute return self.cursor.execute(sql, params) File "D:\software\python3\anconda3\Lib\site-packages\django\db\backends\sqlite3\base.py", line 383, in execute return Database.Cursor.execute(self, query, params)django.db.utils.OperationalError: no such table: django_session[01/Oct/2023 16:18:46] "POST /login_action/ HTTP/1.1" 500 140361
通过 migrate 命令进行数据迁移。
京公网安备 11010502049817号