一 创建网页:学习笔记主页 1 映射URL 用户通过在浏览器中输入URL以及单击链接来请求网页,因此我们需要确定项目需要哪些URL 。主页的URL 最重要, 它是用户用来访问项目的基础URL 。...当前, 基础URL(http://localhost:8000/)返回默认的Django网站,让我们知道正确地建立了项目。我们将修改这一点,将这个基础URL映射到“学习笔记”的主页。...Django在urlpatterns中查找与请求的URL字符串匹配的正则表达式,因此正则表达式定义了Django可查找的模式。 url()的第二个实参指定了要调用的视图函数。...每当需要提供到这个主页的链接时,我们都将使用这个名称,而不编写URL。...模板指定了网页是什么样的,而每当网页被请求时,Django将填入相关的数据。模板让你能够访问视图提供的任何数据。我们的主页视图没有提供任何数据,因此相应的模板非常简单。
18.2.7 Django shell 输入一些数据后,就可通过交互式终端会话以编程方式查看这些数据了。这种交互式环境称 为Django shell,是测试项目和排除其故障的理想之地。...如果代码在shell中的行为符合预期,那么它们在项目文件中也能正确地工作。如果代码引 发了错误或获取的数据不符合预期,那么在简单的shell环境中排除故障要比在生成网页的文件中 排除故障容易得多。...就 目前而言,主页只显示标题和简单的描述。 18.3.1 映射 URL 用户通过在浏览器中输入URL以及单击链接来请求网页,因此我们需要确定项目需要哪些 URL 。...下面的代码演示 了该如何为主页编写视图: from django.shortcuts import render def index(request): """学习笔记的主页""" return...模板指定了网页是什么样的,而每当网页被请求时,Django将填入 相关的数据。模板让你能够访问视图提供的任何数据。我们的主页视图没有提供任何数据,因此 相应的模板非常简单。
然后我们修正退出按钮的超链接,从/home/改成 /logout/ 然后去urls.py中补充好该映射: 注意这个细节,urls.py中的url,前面只有^ 没有 / 。...调用django的内部函数auth.logout函数 来实现退出功能。 给用户跳转到登陆页面。...我们现在确保服务启动中,刷新页面,可以尝试一下。 结果是的确退出了,并且自动跳回到登陆页面! 非常迅速,cookie全自动清楚了。...居然藏着这样一个地方可以管理所有平台数据和用户! 好的 这里我们只能通过管理员账号密码 来登陆。但是我们貌似并不知道管理员账号是什么?我们之前自己注册的都只是普通用户,根本无权限登陆这个后台。...答案是通过 命令行 输入命令的方式 创建第一个超级管理员。
上一节,我们了解了Django中如何加载html页面、介绍了模板语言DTL、以及静态文件的加载。 现在页面已经能正常显示了,我们希望网页中的链接点击后能跳转到指定页面或者自动重定向该怎么做呢?...所以今天会向大家介绍一下Django中的url跳转以及多app环境的管理。 一、URL跳转 URL的跳转是什么呢?URL的跳转可以称为URL重定向,表示从一个HTML页面跳到另外一个页面。...用户没登录则访问登录页面,登录了则访问主页 二、多app项目 在实际的开发过程中,为了减少相互之间的干扰,以及便于团队之间的同步开发,网站的每一个模块都部署在不同的app中。...("", views.index), ] 最后在项目urls.py中做一个中转, from django.urls import path, include path('', include("home.urls...多app环境下分别访问主页、音乐、电影页面 最后 以上,关于url重定向与多app下模板文件与静态文件的管理我们就介绍这么多。下一节,我们继续更新Django相关知识。
(一) 说明 简单说明下django的工作方式,并举2个例子。...(二) Django工作方式 假定我们有下面这些文件 ,这里在前2篇的基础上增加了 templates目录(存放html文件) 和static目录(存放图片JS、css等) ? ?...= [ #使用path时第一参数写什么,实际就是什么,第二个参数和re_path是一样的 path('admin/', admin.site.urls), #使用re_path...(关于base.html的继承这里就先不说明了,要不有点混乱) 简单的解释下 1、{%%}是模板标签,用来写for if 、else等(下面的这个for,和纯python的for是差不多的 ),这个标签很多...可以在python manage.py shell中测试,具体使用方式参考https://docs.djangoproject.com/en/dev/intro/tutorial02/ 中的说明 1
我们不创建用于注销的页面,而让用户只需单击一个 链接就能注销并返回到主页。为此,我们将为注销链接定义一个URL模式,编写一个视图函数, 并在base.html中添加一个注销链接。 1....在2处,我们调用了函数logout(), 它要求将request对象作为实参。然后,我们重定向到主页(见3)。 3. 链接到注销视图 现在我们需要添加一个注销链接。...注册页面的URL模式 下面的代码定义了注册页面的URL模式,它也包含在users/urls.py中: urls.py --snip-- urlpatterns = [ # 登录页面...要测试这个设置,可注销并进入主页。然后,单击链接Topics,这将重定向到登录页面。接 下来,使用你的账户登录,并再次单击主页中的Topics链接,你将看到topics页面。 2....你可以轻松地修改过于严格的 访问限制,其风险比不限制对敏感页面的访问更低。 在项目“学习笔记”中,我们将不限制对主页、注册页面和注销页面的访问,并限制对其他 所有页面的访问。
要修改项目中的URL,只需修改urls.py 中的URL模式,这样网页被请求时,Django将自动插入修改后的URL。...在我们的项目中,每个网 页都将继承base.html,因此从现在开始,每个网页都包含到主页的链接。 在2处,我们插入了一对块标签。...这种配置提供了一种效率极高的工作方式,让你乐意不断地去改进 网站。...(见1),然后添加了一个到显示所有主题的页 面的链接——使用的也是模板标签url(见2)。...这一行让Django生成一个链接,它与learning_logs/ urls.py中名为topics的URL模式匹配。 现在如果你刷新浏览器中的主页,将看到链接Topics。
我们的投票应用中,需要下列几个视图: • 问题索引页——展示最近的几个投票问题。 • 问题详情页——展示某个投票的问题和不带结果的选项列表。 • 问题结果页——展示某个投票的结果。.../urls.py中建立url和视图的映射: #polls/urls.py from django.urls import path from . import views urlpatterns =...我们需要帮助 Django 选择正确的模板,最好的方法就是把他们放入各自的 命名空间 中,也就是把这些模板放入一个和自身应用重名的子文件夹里。...用你的浏览器访问 "/polls/" ,你将会看见一个无序列表,列出了我们在 教程第 2 部分 中添加的投票问题,链接指向这个投票的详情页。...%}">{{ question.question_text }} 这个标签的工作方式是在polls.urls模块的URL定义中寻具有指定名字的条目。
2、设置路由 要想实现跳转页面的功能,肯定要设置路由,总体的路由控制都是在 urls 文件中配置的,具体到哪一个页面由 views 控制;由于我们项目是分级的,所以我们要分别配置一下路由信息,首先在子应用程序中新建一个...urls 文件,然后在主应用中的 urls 文件中引入子应用的路由。...下面检验一下路由配置是否正确。 首先创建一个首页的前端页面,然后在 views 中创建一个 index 函数,让该函数返回 index HTML 页面。 ?...我们也可以使用 Django 自带的 Admin 功能来实现通过 web 浏览器的方式来访问数据库,只需要配置一下一下的几个地方: 首先在主应用的 settings 文件中修改配置信息: 大概在 108...返回值为:当前文章的数据,下一篇文章的数据,和上一篇文章的数据。 注意一点就是如果已经到达了首页或者尾页,那么就不能再跳转了,所以进行了两个判断。 最后在页面中接收即可: ?
在我们应用程序的主页中。...如果您还记得我们的线框图,图 5显示了主页应该是什么样子。我们想要做的是在表格中显示板列表以及其他一些信息。...现在我们可以测试 Django 是否为请求的 URL 返回了正确的视图函数。这也是一个有用的测试,因为随着开发的进行,您将看到urls.py 模块变得非常庞大和复杂。...URL conf 都是关于解析正则表达式的。在某些情况下,我们有一个非常宽松的 URL,因此 Django 最终可能会返回错误的视图函数。...Django 使用它来将请求的 URL 与urls.py 模块中列出的 URL 列表进行匹配。此测试将确保作为 /根 URL 的 URL 返回主视图。
所以,综合来看,在Django中的视图+路由才应该是等价于MVC模式中的C。视图函数确实完成了业务逻辑,但是还差了一个步骤,那就是如何调用这个视图函数,这就是路由的作用。...通过路由,Django将不同的路由和不同的视图函数对应起来。这样就可以根据请求中的路由来调用相应的视图函数完成业务逻辑的处理。...这种方式确实更好的体现了模块化的思想,首页只告诉你主路由是什么,当你访问了主路由之后,如果子路由不正确,才会给你提示子路由。...---- 相对简单的路由书写方式 如果你嫌弃这种方式比较麻烦,那么也可以在项目的urls.py中按照如下的方式书写路由。...path('', include('book.urls')), 这样,将会在主页提示你所有的路由,这种方式更加方便。只不过你可能需要在APP的urls.py文件中书写多层次的路由。
Python 中调用属性的方式通常是 created_time.year,但是由于这里作为方法的参数列表,所以 django 要求我们把点替换成了两个下划线,即 created_time__year。...接下来在 inclusions 文件夹下找到 archives 的模板,修改超链接的 href 属性,让用户点击超链接后跳转到文章归档页面: inclusions/_archives.html ......第一部分为在应用的 urls.py 中指定的 app_name 的值(充当命名空间,这样即使不同 app 下有相同的视图函数名,也不会冲突),第二部分 path 函数中传入的 name 参数的值。...分类页面 同样的写好分类页面的视图函数: blog/views.py import markdown from django.shortcuts import render, get_object_or...标签页面 标签页和分类是完全一样的步骤,因此稍微修改一下分类相关的代码就可以用于标签了。
参见万维网的发明者Berners-Lee 的Cool URIs don’t change,里面有关于为什么URL 应该保持整洁和有意义的卓越的论证。...捕获的参数永远是字符串 每个捕获的参数都作为一个普通的Python 字符串传递给视图,无论正则表达式使用的是什么匹配方式。例如,下面这行URLconf 中: url(r'^articles/(?...根据Django 视图的标识和将要传递给它的参数的值,获取与之关联的URL。 第一种方式是我们在前面的章节中一直讨论的用法。...在某些场景中,一个视图是通用的,所以在URL 和视图之间存在多对一的关系。对于这些情况,当反查URL 时,只有视图的名字还不够。请阅读下一节来了解Django 为这个问题提供的解决办法。...在下面的例子中,我们将讨论在两个不同的地方部署教程中的polls 应用,这样我们可以为两种不同的用户(作者和发布者)提供相同的功能。
djoser是什么? 作用:Django认证系统的REST实现。djoser库提供了一组Django Rest Framework视图,用于处理注册、登录、注销、密码重置和帐户激活等基本操作。...djoser并没有重写Django代码(例如PasswordResetForm),而是重新实现了一些东西,以更好地适应单页应用程序体系结构。...', (...), 'rest_framework', 'djoser', (...), ) 在urls.py中添加如下代码 urlpatterns = [ (....使用方式 在INSTALLED_APPS 中添加rest_framework.authtoken INSTALLED_APPS = [ 'django.contrib.auth', (....('djoser.urls.jwt')), ] 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/164824.html原文链接:https://javaforall.cn
分类页面的实现 考虑到分类页面是一个用来展示属于当前类别的所有文章,和首页一样的格式,就是显示的列表项十有八九会比首页少,因此分类页面的视图直接继承首页的视图,然后重写 get_queryset 方法就完事了...,代码如下: path('categories/', CategoryView.as_view()) 最后去对应的模板文件中增加带有超链接的导航栏,代码如下: ...,代码如下: from django.contrib import admin from django.urls import path, include from django.contrib.staticfiles.urls...import staticfiles_urlpatterns from django.conf import settings from django.conf.urls.static import...接下来我们就尝试搜索,在搜索框中输入一个东西,看看是否可以被检索到,我在这里直接输入 2,然后点击搜索,最后搜索的结果如图所示。 ?
在标签{% url %}中,我们将 条目ID作为一个实参,让视图对象能够修改正确的条目对象。...链接文本为"edit entry", 它出现在页面中每个条目的后面。图19-3显示了包含这些链接时,显示特定主题的页面是什么 样的。 至此,“学习笔记”已具备了需要的大部分功能。...这个URL中的单词users让Django在users/urls.py中查找,而单词login让 它将请求发送给Django默认视图login(请注意,视图实参为login,而不是views.login...链接到登录页面 下面在base.html中添加到登录页面的链接,让所有页面都包含它。...输入 你在前面设置的用户名和密码,将进入页面index。。在这个主页的页眉中,显示了一条个性化问 候语,其中包含你的用户名。
(记得清除cookie)比如我们的用户在进入我们的个人信息页面的时候,如果没有登录,就会跳转到登录页面,还会添加一个参数next表示我们刚刚访问的个人信息页(xm_user/login?...直接request.GET.get('next')就会获取到/xm_user/,当获取到next的值的时候就跳转该页,获取不到,我们设置 一个默认值也就是主页的url,最后我们在LoginView类中的...同样的我们的这三个页面的图片和链接都需要反向解析。上面如果我们很多方法都需要验证是否登录!那我们是不是需要写这个login_required函数写无数遍?...这样我们的urls.py中还是按照以前的写。二者选其一就好了。...退出功能 在xm_user中views.py中写一个视图类: #导入logout,清除session from django.contrib.auth import logout class LogouView
参见万维网的发明者Berners-Lee 的Cool URIs don’t change,里面有关于为什么URL 应该保持整洁和有意义的卓越论证。...捕获的参数都是字符串¶ 每个捕获的参数都作为一个普通的Python 字符串传递给视图,无论正则表达式使用的是什么匹配方式。例如,下面这行URLconf 中: url(r'^articles/(?...根据Django 视图的标识和将要传递给它的参数的值,获取与之关联的URL。 第一种方式是我们在前面的章节中一直讨论的用法。...在某些场景中,一个视图是通用的,所以在URL 和视图之间存在多对一的关系。对于这些情况,当反查URL 时,只有视图的名字还不够。请阅读下一节来了解Django 为这个问题提供的解决办法。...在下面的例子中,我们将讨论在两个不同的地方部署教程中的polls应用,这样我们可以为两种不同的用户(作者和发布者)提供相同的功能。
函数就这么简单,但目前它还只是一个纯 Python 函数,Django 在模板中还不知道该如何使用它。...11.1.归档页面 要显示某个归档日期下的文章列表,思路和显示主页文章列表是一样的,回顾一下主页视图的代码: blog/views.py def index(request): post_list...12.4.绑定url 视图函数需要和 URL 绑定,这里我们在 comment 应用中再建一个 urls.py 文件,写上 URL 模式: comments/urls.py from django.conf.urls...')), ] 12.5..更新文章详情页面的视图函数 我们可以看到评论表单和评论列表是位于文章详情页面的,处理文章详情页面的视图函数是 detail,相应地需要更新 detail,让它生成表单和从数据库获取文章对应的评论列表数据...和处理 index 页面的文章列表方式是一样的,我们在模板中通过 {% for %} 模板标签来循环显示文章对应的全部评论内容。
主页面访问问题 在完成了之前的代码之后,进行简单的测试。刷新一下页面会发现跳回到了登录页面。 可是我明明做了会话的保存呀,怎么又给我退回去了。...看一下我们登录部分的urls和views可以看到,只输入ip+端口的url进行访问会触发get请求 1def get(self, request): 2 return render(request...新建app 和之前的loginapp一样,我们把它拉到apps文件夹下,然后去settings里面进行配置 在INSTALLED_APPS中加入workspace 1INSTALLED_APPS =...'login', 9 'workspace' 10] 在workspace里面新建urls.py文件 然后在主的urls.py中加入path('',include('workspace.urls...设置登录后跳转 因为我们登录页面的登录是一个button,所以我们无法使用直接链接到正确页面的方式。 我们采用重定向的方式完成登录。
领取专属 10元无门槛券
手把手带您无忧上云