django入门与实践1-16章总结(代码片段)

larken larken     2022-12-28     612

关键词:

注意事项:随时备份、随时记录、从宏观到微观
不闻不若闻之,闻之不若见之,见之不若知之,知之不若行之;学至于行之止矣
安装 Python 3.6.2
pip install django==1.11.4
django-admin startproject myproject
python manage.py runserver
    http://127.0.0.1:8000
    使用组合键 Control + C 来终止开发服务器。
django-admin startapp boards
settings.py:这个文件包含了所有的项目配置。将来我们会一直提到这个文件!
urls.py:这个文件负责映射我们项目中的路由和路径。例如,如果你想
        在访问URL / about/ 时显示某些内容,则必须先在这里做映射关系。
在Django的哲学中,我们有两个重要的概念:
    app:是一个可以做完成某件事情的Web应用程序。一个应用程序通常由一组models(数据库表),views(视图),templates(模板),tests(测试) 组成。
    project:是配置和应用程序的集合。一个项目可以由多个应用程序或一个应用程序组成。
migrations/:在这个文件夹里,Django会存储一些文件以跟踪你在models.py文件中创建的变更,用来保持数据库和models.py的同步。
admin.py:这个文件为一个django内置的应用程序Django Admin的配置文件。
apps.py:这是应用程序本身的配置文件。
models.py:这里是我们定义Web应用程序数据实例的地方。models会由Django自动转换为数据库表。
tests.py:这个文件用来写当前应用程序的单元测试。
views.py:这是我们处理Web应?程序请求(request)/响应(resopnse)周期的文件。
我们需要找到一种方法来区分普通用户和管理员用户,因为只有管理员可以创建版块。
迁移模型
    python manage.py makemigrations
    python manage.py sqlmigrate boards 0001
    python manage.py migrate
    python manage.py shell
测试将是一个反复出现的主题,我们将在整个教程系列中一起探讨不同的概念和策略。
    python manage.py test --verbosity=2    0是无输出,1是正常输出,2是详细输出。
在manage.py所在的目录创建一个名为 templates的新文件夹:
    在templates文件夹中,创建一个名为home.html的HTML文件:
只要记得但凡是需要引用CSS,JavaScript或图片文件的地方就使用 % static % 。
一个项目可以有很多 urls.py 分布在多个应用(app)中。Django 需要一个url.py 作为入口。
这个特殊的 urls.py 叫做 根路由配置(root URLconf)。它被定义在 settings.py 中。
URL 调度器(dispatcher) 和 URLconf (URL configuration) 是 Django应用中的基础部分。
def url(regex, view, kwargs=None, name=None):
在 templates 文件夹中创建一个名为 base.html 的文件:
test_csrf:由于 CSRF Token 是处理 Post 请求的基本部分,我们需要保证我们的 HTML 包含 token。。
test_new_topic_valid_post_data:发送有效的数据并检查视图函数是否创建了 Topic 和 Post 实例。
test_new_topic_invalid_post_data:发送一个空字典来检查应用的行为。
test_new_topic_invalid_post_data_empty_fields:类似于上一个测试,但是这次我们发送一些数据。预期应用程序会验证并且拒绝空的subject 和 message。
Forms(表单) 用来处理我们的输入。Django 使用两种类型的form: forms.Form 和 forms.ModelForm 。
首先我们判断请求是 POST 还是 GET。如果请求是 POST,这意味着用户向服务器提交了一些数据。
    所以我们实例化一个将 POST 数据传递给 form 的form 实例: form = NewTopicForm(request.POST) 。
所以,我们有三种不同的渲染状态:Initial state:Invalid:Valid:
复用表单模板:在 templates 文件夹中,创建一个新的文件夹命名为 includes:
这一章节将会全面介绍 Django 的身份认证系统,我们将实现注册、登录、注销、密码重置和密码修改的整套流程。
如果用户已经通过身份认证,我们应该显示他们的名字,和带有“我的账户”,“修改密码”,“登出”这三个选项的下拉框
django-admin startapp accounts
下一步,在 settings.py 文件中将 accounts app 添加到 INSTALLED_APPS :
密码重置过程需要四个视图:
    带有表单的页面,用于启动重置过程;
    一个成功的页面,表示该过程已启动,指示用户检查其邮件文件夹等;
    检查通过电子邮件发送token的页面
    一个告诉用户重置是否成功的页面
如果你发现上面的说明很模糊,只需要直接在下面的链接下载文件
    https://code.jquery.com/jquery-3.2.1.min.js
    https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js
    https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js
python manage.py createsuperuser
    Username (leave blank to use vitorfs): admin
    Email address: [email protected]
    Password:larken0627
    Password (again):larken0627
    Superuser created successfully.
ERROR: test_board_topics_view_not_found_status_code (boards.tests.BoardTopicsTests)
ERROR: test_new_topic_invalid_post_data (boards.tests.NewTopicTests)
FAIL: test_new_topic_invalid_post_data_empty_fields (boards.tests.NewTopicTests)
myproject/settings.py        
    INSTALLED_APPS = [boards,]
    STATIC_URL = /static/
    STATICFILES_DIRS = [
        os.path.join(BASE_DIR, static),
    ]
    ROOT_URLCONF = myproject.urls
    LOGOUT_REDIRECT_URL = home
    LOGIN_REDIRECT_URL = home
    EMAIL_BACKEND = django.core.mail.backends.console.EmailBackend
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 accounts_views
    from boards import views
    urlpatterns = [
        url(r^$, views.home, name=home),
        url(r^signup/$, accounts_views.signup, name=signup),
        url(r^logout/$, auth_views.LogoutView.as_view(), name=logout),
        url(r^boards/(?P<pk>d+)/$, views.board_topics, name=board_topics),
        url(r^boards/(?P<pk>d+)/new/$, views.new_topic, name=new_topic),
        url(r^admin/, admin.site.urls),
]    
templates/home.html    
    % for board in boards %
     board.name  <br>
    % endfor %
boards/views.py
    from django.shortcuts import render
    from .models import Board
        def home(request):
        boards = Board.objects.all()
        return render(request, home.html, boards: boards)
boards/tests.py
    from django.core.urlresolvers import reverse
    from django.test import TestCase
    class HomeTests(TestCase):
    def test_home_view_status_code(self):
        url = reverse(home)
        response = self.client.get(url)
        self.assertEquals(response.status_code, 200)

 

django入门与实践-第21章:迁移(完结)(代码片段)

http://127.0.0.1:8000/boards/1/pythonmanage.pymigrate#boards/models.pyclassTopic(models.Model):views=models.PositiveIntegerField(default=0)#<-herepythonmanage.pymakemigrationspythonmanage.pymigrate 查看详情

django入门与实践-第12章:复用模板(完结)(代码片段)

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-brandfont-family:‘Peralta‘,cursive;<!--te 查看详情

django入门与实践-第22章:基于类的视图(代码片段)

http://127.0.0.1:8000/boards/1/topics/2/posts/2/edit/http://127.0.0.1:8000/#boards/views.pyfromdjango.views.genericimportUpdateViewfromdjango.utilsimporttimezoneclassPostUpdateView(UpdateView):model=P 查看详情

django入门与实践-第19章:主题回复(完结)(代码片段)

http://127.0.0.1:8000/boards/1/topics/1/reply/http://127.0.0.1:8000/boards/1/topics/1/#myproject/urls.pyurl(r‘^boards/(?P<pk>d+)/topics/(?P<topic_pk>d+)/reply/$‘,views.reply_topic,name=‘ 查看详情

django入门与实践-第20章:querysets(查询结果集)(完结)(代码片段)

http://127.0.0.1:8000/boards/1/#boards/models.pyfromdjango.utils.textimportTruncatorclassTopic(models.Model):#...def__str__(self):returnself.subjectclassPost(models.Model):#...def__str__(self):truncat 查看详情

django入门与实践课程系列第2篇(代码片段)

...打开命令行,进入想要安置项目的目录2)命令行输入:django-adminstartprojectmyblog(myblog是项目名称)3)若没有报错,则创建项目成功用编译器打开该项目工程项目目录结构1)manage.py:与项目进行交互的命令行工具集的入口,即项... 查看详情

django入门与实践-关于升级到django3.7,三种模板超链接配置(编辑中)(代码片段)

第一种方法:在myblog/urls.py模块中:fromdjango.contribimportadminfromdjango.urlsimportpath,includeurlpatterns=[path(‘admin/‘,admin.site.urls),path(‘blog1/‘,include((‘blog1.urls‘,‘a‘),namespace=‘blogg‘)),#‘a‘可以为任意字符,但不能为空]myblog/urls.py在b... 查看详情

《python从入门到实践》第八章动手试一试(代码片段)

8-1消息:编写一个名为display_message()的函数,它打印一个句子,指出你在本章学的是什么。调用这个函数,确认显示的消息正确无误。defdisplay_message():print("我在本章学习到了什么叫形参什么叫做形参如何传递参数")returnNon... 查看详情

《移动平台开发实践》第7周学习总结(代码片段)

201892082018-2019-2《移动平台开发实践》第7周学习总结教材学习内容总结需求:用户需求:用户提出的。产品需求:由用户需求提炼出的需求。需求分析一般步骤:挖掘真实需求;(更快的马车)目标用户使用场景想要解决的问题... 查看详情

python入门自学进阶-web框架——13django实践小项目3(代码片段)

实现老师管理中心班级选择的左右框列表方式实现:Django中的数据库查询,有filter(),还有一个exclude()models.Tb.objects.filter(name='root')   查找name为root的记录models.Tb.objects.exclude 查看详情

python入门自学进阶-web框架——12django实践小项目2(代码片段)

...sProvince(models.Model):name=models.CharField(max_length=32)#默认Django会生成id列作为主键,也可以自己定义一个唯一的主键#nid=models.Integ 查看详情

python入门自学进阶-web框架——11django实践小项目(代码片段)

以学生、老师、班级管理实现一个小的管理项目。基本的界面 前端页面的总的框架,因为页头、左侧菜单栏基本是始终保持一致,只是右边内容随不同的菜单项改变,所以,使用一个lindex_base.html作为框架模板。... 查看详情

社区共读《python编程从入门到实践》第7,8,9天阅读建议(代码片段)

《Python编程从入门到实践》第11章讲解的内容是测试代码,而第11章学习完毕,你将进入本书的项目部分,开始实战!第十一章阅读建议本章节主要学习的是unittest模块,该模块主要用于测试代码,本章节属... 查看详情

社区共读《python编程从入门到实践》第7,8,9天阅读建议(代码片段)

《Python编程从入门到实践》第11章讲解的内容是测试代码,而第11章学习完毕,你将进入本书的项目部分,开始实战!第十一章阅读建议本章节主要学习的是unittest模块,该模块主要用于测试代码,本章节属... 查看详情

django入门与实践课程系列第1篇

...ML语言3.了解浏览器上网的基本原理二、课前准备1.什么是Django1)Django官网地址:www.djangoproject.com2)Django是一个基于Python的高级Web开发框架3)它能够让开发人员进行高效且快速的开发4)高度集成(不用自己造轮子),免费并且... 查看详情

《python从入门到实践》知识点总结归纳——第三章(代码片段)

1.列表简介1.1列表——在Python中,用方括号([])来表示列表,并用逗号来分隔其中的元素可以通过索引访问列表元素 print(bicycles[0])注:索引从0开始而不是1,要访问列表的任何元素,都可将其位置减1,通过将索引指定... 查看详情

《elasticsearch源码解析与优化实战》第21章:综合应用实践(代码片段)

文章目录简介集群层规划集群规模单节点还是多节点部署移除节点独立部署主节点节点层控制线程池的队列大小为系统cache保留一半物理内存系统层关闭swap配置LinuxOOMKiller优化内核参数索引层使用全局模板索引轮转避免热索引分... 查看详情

《elasticsearch源码解析与优化实战》第21章:综合应用实践(代码片段)

文章目录简介集群层规划集群规模单节点还是多节点部署移除节点独立部署主节点节点层控制线程池的队列大小为系统cache保留一半物理内存系统层关闭swap配置LinuxOOMKiller优化内核参数索引层使用全局模板索引轮转避免热索引分... 查看详情