http://127.0.0.1:8000/boards/1/topics/2/posts/2/edit/ http://127.0.0.1:8000/ #boards/views.py from django.views.generic import UpdateView from django.utils import timezone class PostUpdateView(UpdateView): model = Post fields = ('message', ) template…
http://127.0.0.1:8000/boards/1/ http://127.0.0.1:8000/boards/2/ http://127.0.0.1:8000/boards/3/ http://127.0.0.1:8000/boards/1/new/http://127.0.0.1:8000/boards/2/new/ http://127.0.0.1:8000/boards/3/new/ 这是我们在前一个教程绘制的线框图.我现在意识到这个可能是一个不好的例子,因为这个特殊的表单涉及…
http://127.0.0.1:8000/boards/1/topics/62/reply/ 我觉得只添加内置的个性化(humanize)包就会很不错. 它包含一组为数据添加“人性化(human touch)”的工具集. 例如,我们可以使用它来更自然地显示日期和时间字段. 我们可以简单地显示:“2分钟前”,而不是显示整个日期. 首先,添加 django.contrib.humanize 到配置文件的INSTALLED_APPS 中. #myproject/settings.py INSTALL…
http://127.0.0.1:8000/signup/ django-admin startapp accounts INSTALLED_APPS = [ 'accounts', ] # myproject/urls.py from django.conf.urls import url from django.contrib import admin from accounts import views as accounts_views from boards import views…
http://127.0.0.1:8000/http://127.0.0.1:8000/boards/1/http://127.0.0.1:8000/boards/2/http://127.0.0.1:8000/boards/3/ <!--static/css/app.css--> .navbar-brand { font-family: 'Peralta', cursive; } <!--templates/base.html--> {% load static %}<!D…
http://127.0.0.1:8000http://127.0.0.1:8000/boards/1/http://127.0.0.1:8000/boards/2/http://127.0.0.1:8000/boards/3/ # myproject/urls.py from django.conf.urls import url from django.contrib import admin from boards import views urlpatterns = [ url(r'^$…
http://127.0.0.1:8000/boards/1/topics/102/reply/ 让我们在文本区域添加 Markdown 支持来改善用户体验. 你会看到要实现这个功能非常简单. 首先,我们安装一个名为 Python-Markdown 的库: pip install markdown #我们可以在 Post 视图的 model 中添加一个新的⽅法: #boards/models.py from django.db import models from django.utils.ht…
http://127.0.0.1:8000/settings/account/ #好的,那么,这部分将是我们最后的一个视图.之后,我们将专心来改进现有功能. #accounts/views.py from django.contrib.auth.decorators import login_required from django.contrib.auth.models import User from django.urls import reverse_lazy from django.u…
http://127.0.0.1:8000/boards/1/ #从现在起,我们将在 board_topics 这个视图中来操作. python manage.py shell from django.contrib.auth.models import User from boards.models import Board, Topic, Post user = User.objects.first() board = Board.objects.get(name='Django') for…
http://127.0.0.1:8000/boards/1/ #boards/models.py from django.utils.text import Truncator class Topic(models.Model): # ... def __str__(self): return self.subject class Post(models.Model): # ... def __str__(self): truncated_message = Truncator(self.me…
http://127.0.0.1:8000/boards/1/ #boards/views.py from django.contrib.auth.decorators import login_required @login_required def new_topic(request, pk): <!--配置登录后的重定向地址--> <!----templates/login.html--> <form method="post" novalidate…
# myproject/settings.py LOGIN_REDIRECT_URL = 'home' EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' http://127.0.0.1:8000/login/ http://127.0.0.1:8000/signup/ http://127.0.0.1:8000/reset/ http://127.0.0.1:8000/reset/done/ http://127.…
# myproject/settings.py LOGOUT_REDIRECT_URL = 'home' http://127.0.0.1:8000/logout/ # myproject/urls.py from django.conf.urls import url from django.contrib import admin from django.contrib.auth import views as auth_views from accounts import views as…
http://127.0.0.1:8000/boards/1/ python manage.py migrate #boards/models.py class Topic(models.Model): views = models.PositiveIntegerField(default=0) # <- here python manage.py makemigrations python manage.py migrate #boards/views.py def topic_posts(r…
http://127.0.0.1:8000/boards/1/topics/1/reply/ http://127.0.0.1:8000/boards/1/topics/1/ #myproject/urls.py url(r'^boards/(?P<pk>\d+)/topics/(?P<topic_pk>\d+)/reply/$',views.reply_topic, name='reply_topic'), #boards/forms.py from .models import…
http://127.0.0.1:8000/boards/1/topics/1/ #boards/views.py @login_required def new_topic(request, pk): board = get_object_or_404(Board, pk=pk) if request.method == 'POST': form = NewTopicForm(request.POST) if form.is_valid(): topic = form.save(commit=…
Django入门与实践-第17章:保护视图 Django 有一个内置的视图装饰器 来避免它被未登录的用户访问: 现在如果用户没有登录,将被重定向到登录页面: 现在尝试登录,登录成功后,应用程序会跳转到原来所在的位置. Django入门与实践-第18章:访问已登录用户 现在我么可以改进 new_topic 视图,将发布主题的用户设置当前登录的用户,取代之前直接从数据库查询出来的第一个用户, 之前这份代码是临时的,因为那时候还没有方法去获取登录用户,但是现在可以了: 有两个关键字参数,pk用于唯一标…
#Python编程从入门到实践#第四章笔记   操作列表 ​​​1.遍历列表 使用for循环,遍历values列表 for value in values: print(value) 2.数字列表 使用range(a,b)函数生成一系列数字,从a开始,并在到达b后停止[不包含b] eg:    for value in range(1,5): print(value) 打印结果:1 2 3 4 函数list()将range()的结果转换为列表. print(list(range(1,6))   …
欢迎访问我的个人网站:www.comingnext.cn 前言 在上一篇文章中,主要讲的是请求和响应,项目里面views.py中的视图函数都是基于函数的,并且我们介绍了@api_view这个很有用的装饰器.同时,我们还介绍了APIView这个类,但是还没使用它.在这篇文章中,我们要做的是把基于方法的视图改为基于类的视图,将会了解到APIView. 改为基于类的视图 重构一下snippets/view.py: from snippets.models import Snippet from sni…
Django 自学笔记兼学习教程第7章第1节--基于类的视图(Class-based views)介绍 点击查看教程总目录 1 介绍 Class-based views (CBVs) are views generated from models. Class-based views:基于模型自动生成的视图. 在web开发中,为模型(models)制作各种各样的视图是工作量很大的事情, Class-based views简化了这些工作. 2 代码 CBVs可以直接使用,例如在urls.py里直接…
我们也可以使用基于类的视图编写我们的API视图,而不是基于函数的视图.我们将看到这是一个强大的模式,允许我们重用常用功能,并帮助我们保持代码DRY. 使用基于类的视图重写我们的API 我们将首先将根视图重写为基于类的视图.所有这一切都涉及到一些重构views.py. from snippets.models import Snippet from snippets.serializers import SnippetSerializer from django.http import Http4…
django 视图 分为两种: 1.  FBV  基于函数的视图      function   based  view 2.  CBV  基于类的视图         class   based   view 基于类的视图 CBV :基于 类的视图函数 1.后端逻辑处理时不用通过逻辑,来判断请求方式是get还是post请求 在视图类中,定义了get方法就是写get请求的逻辑,定义类post方法时 就是post请求逻辑.2.View 的源码分析过程 1.先从url.py 文件的开始分析入手: f…
一.CBV(基于类的视图) 视图是可以调用的,它接受请求并返回响应,这不仅仅是一个函数,Django提供了一些可以用作视图的类的例子,这些允许您通过继承或mixin来构建视图并重用代码. 基本示例 Django提供了基本的视图类,它将适用于广泛的应用程序.所有的视图类都继承自View该类,它处理将视图链接到URL,HTTP方法调用和其他简单的功能. 在URLconf中简单使用 BookView是一个视图类,而不是一个函数,所以我们将URL指向as_view()类方法,它为基于类的视图提供了类似于…
基于类的视图(Class-based view)是Django 1.3引入的新的视图编写方式,用于取代以前基于函数(Function-based)方式. 借助于OO和Python中方便的多重继承特性,基于类的视图可以提供更好的抽象与复用能力. 新的通用视图将更加优雅. Django的文档较为丰富,但在实际开发中往往仍显得不够,很多时候还是需要深入到源代码当中一探究竟.为此,仔细整理了一下基于类的视图的实现方式.期望对以后的开发能够提供更加清晰.直接的参考. 说明: Django大量应用了多重继承…
源码分析 抽象类和常用视图(base.py) 这个文件包含视图的顶级抽象类(View),基于模板的工具类(TemplateResponseMixin),模板视图(TemplateView)和重定向视图(RedirectView). View及View的执行顺序 View是所有基于类的视图的基类.仅实现了一些基本的方法和必要的检查工作.其中最重要的是dispatch方法.再次方法中,根据HTTP请求 中的method参数,调用相应的同名处理函数.这里留下了一个口子,后续的类需要根据自己的情况来填补…
刚开始的时候,django只有基于函数的视图(Function-based views).为了解决开发视图中繁杂的重复代码,基于函数的通用视图( Funcation-based generic views)出现了,但是不久它的弊端就显示出来:无法扩展.无法定制.基于函数的通用视图的不灵活导致它在现实世界中的应用受限.基于类的通用视图也是出于同样的目的被开发出来,它提供一个工具箱(基类)并支持多重继承,随着它的应用,人们发现它的可扩展性和灵活性远超它的小兄弟——基于函数的通用视图. 基于类的通用视…
​刚开始的时候,django只有基于函数的视图(Function-based views).为了解决开发视图中繁杂的重复代码,基于函数的通用视图( Class-based generic views)出现了,但是不久它的弊端就显示出来:无法扩展.无法定制.基于函数的通用视图的不灵活导致它在现实世界中的应用受限.基于类的通用视图也是出于同样的目的被开发出来,它提供一个工具箱并支持多重继承,随着它的应用,人们发现它的可扩展性和灵活性远超它的小兄弟——基于函数的通用视图. 基于类的通用视图是基于函数的…
前言:上一篇博客中,主要讲的是请求和响应,项目里面views.py中的视图函数都是基于函数的,并且我们介绍了@api_view这个很有用的装饰器.同时,我们还介绍了APIView这个类,但是还没使用它.在这篇文章中,我们要做的是把基于方法的视图改为基于类的视图,这是很强大的模式,使我们可以重用常用功能,可以减少代码量. from snippets.models import Snippet from snippets.serializers import SnippetSerializer fr…
运维开发笔记整理-基于类的视图(CBV) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.FBV与CBV 1>.什么是FBV FBC(function base views)就是在视图里使用函数处理请求.在之前django的学习中,我们一直使用的是这种方式,所以不在赘述. 2>.什么是CBV CBV(class base views)就是在视图里使用类处理请求. Python是一个面向对象的编程语言,如果只用函数来开发,有很多面向对象的有限就错失了(比如封装,继承和多态)…
1.CBV 0.文档 https://q1mi.github.io/Django-REST-framework-documentation/tutorial/3-class-based-views_zh/ https://www.django-rest-framework.org/tutorial/3-class-based-views/ 1.方式1:APIView # 方式1:APIView 使用基于类的视图重写我们的API# 使用基于类视图的最大优势之一是它可以轻松地创建可复用的行为 fro…