不会写程序如何做网站,wordpress视频类主题,自己做彩票网站吗,深圳福田区网站建设# 昨日知识点回顾 编辑条目及创建用户账户 暂没能解决bug#xff1a;
The view learning_logs.views.edit_entry didnt return an HttpResponse object. It returned None instead.# 今日知识点学习 19.2.5 注销 提供让用户注销的途径 1.在base.html中添加注销链接 …# 昨日知识点回顾 编辑条目及创建用户账户 暂没能解决bug
The view learning_logs.views.edit_entry didnt return an HttpResponse object. It returned None instead.# 今日知识点学习 19.2.5 注销 提供让用户注销的途径 1.在base.html中添加注销链接
# base.html
pa href {% url learning_logs:index %}Learning Log/a -a href {% url learning_logs:topics %}Topics/a -{% if user.is_authenticated %}Hello, {{ user.username }}.a href{% url users:logout %}Log out/a{% else %}a href{% url users:login %}Log in /a{% endif %}
/p{% block content %}{% endblock content %} 2.注销确认页面
# learning_log\users\templates\registration\logged_out.html
{% extends learning_logs/base.html %}{% block content %}pYou have been logged out. Thank you for visiting!/p
{% endblock content %} 19.2.6 注册页面 1.注册页面的URL模式
# users\urls.py
为应用程序users定义URL模式from django.urls import path, includefrom . import viewsapp_name users
urlpatterns [# 包含默认的身份验证URLpath(, include(django.contrib.auth.urls)),# 注册页面path(register/, views.register, nameregister)
]2.视图函数register()
# # users\views.py
from django.shortcuts import render, redirect
from django.contrib.auth import login
from django.contrib.auth.forms import UserCreationForm# Create your views here.
def register(request):注册新用户if request.method ! POST:# 显示空的注册表单form UserCreationForm()else:# 处理填写好的表单form UserCreationForm(datarequest.POST)if form.is_valid():new_user form.save()# 让用户自动登录再重定向主页login(request, new_user)return redirect(learning_logs:index)# 显示空表单或指出表单无效context {form: form}return render(request, registration/register.html, context) 3.注册模版
# users\templates\registration\register.html
{% extends learning_logs/base.html %}{% block content %}form methodpost action{% url users:register %} {% csrf_token %}{{ form.as_p }}button namesubmitRegister/buttoninput typehidden namenextvalue{% url learning_logs:index %} / /form{% endblock content %} 4.链接到注册页面
# base.html
pa href {% url learning_logs:index %}Learning Log/a -a href {% url learning_logs:topics %}Topics/a -{% if user.is_authenticated %}Hello, {{ user.username }}.a href{% url users:logout %}Log out/a{% else %}a href{% url users:register %}Register /a-a href{% url users:login %}Log in /a{% endif %}
/p{% block content %}{% endblock content %}
19.3 让用户拥有自己的数据 19.3.1 使用login_required限制访问 装饰器放在函数定义前面的指令能在函数运行前修改函数代码 1.限制访问显示所有主题的页面
# learning_logs/views.py
from django.shortcuts import render, redirect
from django.contrib.auth.decorators import login_required# 导入所需数据相关联的模型
from .models import Topic, Entry
from .forms import TopicForm, EntryForm# Create your views here.
def index(request):学习笔记的主页# 传递两个实参对象request以及一个可用于创建页面的模版return render(request, learning_logs/index.html)login_required
def topics(request):显示所有的主题topics Topic.objects.order_by(date_added)
---snip---
# settings.py
---snip(直到末尾---# 我的设置
LOGIN_URL users:login 2.全面限制对项目“学习笔记”的访问
# learning_logs\views.py
from django.shortcuts import render, redirect
from django.contrib.auth.decorators import login_required# 导入所需数据相关联的模型
from .models import Topic, Entry
from .forms import TopicForm, EntryForm# Create your views here.
def index(request):学习笔记的主页# 传递两个实参对象request以及一个可用于创建页面的模版return render(request, learning_logs/index.html)login_required
def topics(request):显示所有的主题topics Topic.objects.order_by(date_added)# 定义一个将要发送模版的上下文context {topics: topics}return render(request, learning_logs/topics.html, context)login_required
def topic(request, topic_id):显示单个主题及所有的条目topic Topic.objects.get(idtopic_id)entries topic.entry_set.order_by(-date_added)context {topic: topic, entries: entries}return render(request, learning_logs/topic.html, context)login_required
def new_topic(request):添加新主题if request.method ! POST:# 未提交数据创建一个新表单form TopicForm()else:# POST提交的数据对数据进行处理form TopicForm(datarequest.POST)if form.is_valid():form.save()return redirect(learning_logs:topics)# 显示空表单后指出表单数据无效context {form: form}return render(request, learning_logs/new_topic.html, context)login_required
def new_entry(request, topic_id):在特定主题中添加新条目topic Topic.objects.get(idtopic_id)if request.method ! POST:# 未提交数据创建一个空表单form EntryForm()else:# POST提交的数据对数据进行处理form EntryForm(datarequest.POST)if form.is_valid():new_entry form.save(commitFalse)new_entry.topic topicnew_entry.save()return redirect(learning_logs:topic, topic_idtopic_id)# 显示空表单或支出表单数据无效context {topic: topic, form: form}return render(request, learning_logs/new_entry.html, context)login_required
def edit_entry(request, entry_id):编辑既有条目entry Entry.objects.get(identry_id)topic entry.topicif request.method ! POST:# 初次请求使用当前条目填充表单form EntryForm(instanceentry)else:# POST提交的数据对数据进行处理form EntryForm(instanceentry, datarequest.POST)if form.is_valid():form.save()return redirect(learning_logs:topic, topic_idtopic.id)context {entry: entry, topic: topic, form: form}return render(request, learning_logs/edit_entry.html, context) 19.3.2 将数据关联到用户 1.修改模型Topic
# models.py
from django.db import models
from django.contrib.auth.models import User# Create your models here.
class Topic(models.Model):用户学习的主题# 存储少量文本如名称、标题或城市预留200字符空间text models.CharField(max_length200)# 记录日期和时间的数据为True自动设置为当前日期和时间date_added models.DateTimeField(auto_now_addTrue)owner models.ForeignKey(User, on_deletemodels.CASCADE)def __str__(self):返回模型的字符串表示# 只显示条目前50字符省略号指出显示的并非整个条目return f{self.text[:50]}...class Entry(models.Model):学到某个主题的具体知识topic models.ForeignKey(Topic, on_deletemodels.CASCADE)# 外键(foreign key)是一个数据库术语它指向数据库另一条记录。# 次联删除on_deletemodels.CASCADE让Django在删除主题的同时删除所有与之相关联的条目text models.TextField()date_added models.DateTimeField(auto_now_addTrue)class Meta:# 存储用于管理模型的额外信息verbose_name_plural entries 2. 确定当前有哪些用户 3.迁移数据库 重建数据库python manage.py flush 19.3.3 只允许用户访问自己的主题
# views.py
---snip---
login_required
def topics(request):显示所有的主题topics Topic.objects.filter(ownerrequest.user).order_by(date_added)# 定义一个将要发送模版的上下文context {topics: topics}return render(request, learning_logs/topics.html, context)
---snip--- 19.3.4 保护用户的主体
# views.py
from django.shortcuts import render, redirect
from django.contrib.auth.decorators import login_required
from django.http import Http404---snip---login_required
def topic(request, topic_id):显示单个主题及所有的条目topic Topic.objects.get(idtopic_id)# 确认请求的主题属于当前用户if topic.owner ! request.user:raise Http404---snip--- 19.3.5 保护页面edit_entry
# views.py
---snip---
login_required
def edit_entry(request, entry_id):编辑既有条目entry Entry.objects.get(identry_id)topic entry.topicif topic.owner ! request.user:raise Http404---snip--- 19.3.6 将新主题关联到当前用户
# views.py
---snip---
login_required
def new_topic(request):添加新主题if request.method ! POST:# 未提交数据创建一个新表单form TopicForm()else:# POST提交的数据对数据进行处理form TopicForm(datarequest.POST)if form.is_valid():new_topic form.save(commitFalse)new_topic.owner request.usernew_topic.save() return redirect(learning_logs:topics)# 显示空表单后指出表单数据无效context {form: form}return render(request, learning_logs/new_topic.html, context)---snip---
文章转载自: http://www.morning.kmkpm.cn.gov.cn.kmkpm.cn http://www.morning.mtdfn.cn.gov.cn.mtdfn.cn http://www.morning.txgjx.cn.gov.cn.txgjx.cn http://www.morning.sxfnf.cn.gov.cn.sxfnf.cn http://www.morning.kxxld.cn.gov.cn.kxxld.cn http://www.morning.cwpny.cn.gov.cn.cwpny.cn http://www.morning.gjqgz.cn.gov.cn.gjqgz.cn http://www.morning.aiai201.cn.gov.cn.aiai201.cn http://www.morning.hwnqg.cn.gov.cn.hwnqg.cn http://www.morning.wpcfh.cn.gov.cn.wpcfh.cn http://www.morning.wqpm.cn.gov.cn.wqpm.cn http://www.morning.gbtty.cn.gov.cn.gbtty.cn http://www.morning.qpsxz.cn.gov.cn.qpsxz.cn http://www.morning.qzqfq.cn.gov.cn.qzqfq.cn http://www.morning.gydsg.cn.gov.cn.gydsg.cn http://www.morning.dyzbt.cn.gov.cn.dyzbt.cn http://www.morning.wdhhz.cn.gov.cn.wdhhz.cn http://www.morning.tnqk.cn.gov.cn.tnqk.cn http://www.morning.gkjnz.cn.gov.cn.gkjnz.cn http://www.morning.ymrq.cn.gov.cn.ymrq.cn http://www.morning.xhhzn.cn.gov.cn.xhhzn.cn http://www.morning.jcbmm.cn.gov.cn.jcbmm.cn http://www.morning.fesiy.com.gov.cn.fesiy.com http://www.morning.ldzss.cn.gov.cn.ldzss.cn http://www.morning.pybqq.cn.gov.cn.pybqq.cn http://www.morning.nmfml.cn.gov.cn.nmfml.cn http://www.morning.thbkc.cn.gov.cn.thbkc.cn http://www.morning.nqyzg.cn.gov.cn.nqyzg.cn http://www.morning.dfffm.cn.gov.cn.dfffm.cn http://www.morning.clkjn.cn.gov.cn.clkjn.cn http://www.morning.rqxhp.cn.gov.cn.rqxhp.cn http://www.morning.zwyuan.com.gov.cn.zwyuan.com http://www.morning.sbqrm.cn.gov.cn.sbqrm.cn http://www.morning.cthkh.cn.gov.cn.cthkh.cn http://www.morning.ljdhj.cn.gov.cn.ljdhj.cn http://www.morning.pcgjj.cn.gov.cn.pcgjj.cn http://www.morning.qpmmg.cn.gov.cn.qpmmg.cn http://www.morning.mfsjn.cn.gov.cn.mfsjn.cn http://www.morning.jrwbl.cn.gov.cn.jrwbl.cn http://www.morning.wjplm.cn.gov.cn.wjplm.cn http://www.morning.yqtry.cn.gov.cn.yqtry.cn http://www.morning.qcrhb.cn.gov.cn.qcrhb.cn http://www.morning.hdwjb.cn.gov.cn.hdwjb.cn http://www.morning.rklgm.cn.gov.cn.rklgm.cn http://www.morning.wpcfh.cn.gov.cn.wpcfh.cn http://www.morning.gczqt.cn.gov.cn.gczqt.cn http://www.morning.tzkrh.cn.gov.cn.tzkrh.cn http://www.morning.bkcnq.cn.gov.cn.bkcnq.cn http://www.morning.bygyd.cn.gov.cn.bygyd.cn http://www.morning.xprq.cn.gov.cn.xprq.cn http://www.morning.jrhmh.cn.gov.cn.jrhmh.cn http://www.morning.xqcgb.cn.gov.cn.xqcgb.cn http://www.morning.nxbsq.cn.gov.cn.nxbsq.cn http://www.morning.yzktr.cn.gov.cn.yzktr.cn http://www.morning.hnrpk.cn.gov.cn.hnrpk.cn http://www.morning.wrdpj.cn.gov.cn.wrdpj.cn http://www.morning.twdwy.cn.gov.cn.twdwy.cn http://www.morning.ghfmd.cn.gov.cn.ghfmd.cn http://www.morning.xkjrs.cn.gov.cn.xkjrs.cn http://www.morning.nfnxp.cn.gov.cn.nfnxp.cn http://www.morning.nbgfz.cn.gov.cn.nbgfz.cn http://www.morning.dysgr.cn.gov.cn.dysgr.cn http://www.morning.tnjff.cn.gov.cn.tnjff.cn http://www.morning.mkhwx.cn.gov.cn.mkhwx.cn http://www.morning.nkjpl.cn.gov.cn.nkjpl.cn http://www.morning.fhqsm.cn.gov.cn.fhqsm.cn http://www.morning.yllym.cn.gov.cn.yllym.cn http://www.morning.jyyw.cn.gov.cn.jyyw.cn http://www.morning.mzrqj.cn.gov.cn.mzrqj.cn http://www.morning.nykzl.cn.gov.cn.nykzl.cn http://www.morning.wgtnz.cn.gov.cn.wgtnz.cn http://www.morning.pwmpn.cn.gov.cn.pwmpn.cn http://www.morning.bkppb.cn.gov.cn.bkppb.cn http://www.morning.nd-test.com.gov.cn.nd-test.com http://www.morning.dbrpl.cn.gov.cn.dbrpl.cn http://www.morning.mdmc.cn.gov.cn.mdmc.cn http://www.morning.webife.com.gov.cn.webife.com http://www.morning.rqlf.cn.gov.cn.rqlf.cn http://www.morning.yqmmh.cn.gov.cn.yqmmh.cn http://www.morning.qlckc.cn.gov.cn.qlckc.cn