关于“Python”的核心知识点整理大全57

这篇具有很好参考价值的文章主要介绍了关于“Python”的核心知识点整理大全57。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

关于“Python”的核心知识点整理大全57,掌握Python分类专栏:开启智能数据处理之旅!,python,python,前端,javascript,笔记,开发语言

目录

3. 模板edit_entry

edit_entry.html

4. 链接到页面edit_entry

topic.html

19.2 创建用户账户

19.2.1 应用程序 users

1. 将应用程序users添加到settings.py中

settings.py

2. 包含应用程序users的URL

urls.py

19.2.2 登录页面

urls.py

1. 模板login.html

login.html

2. 链接到登录页面

base.html

3. 使用登录页面

往期快速传送门👆(在文章最后):

感谢大家的支持!欢迎订阅收藏!专栏将持续更新!


 

关于“Python”的核心知识点整理大全57,掌握Python分类专栏:开启智能数据处理之旅!,python,python,前端,javascript,笔记,开发语言

from django.shortcuts import render
--snip--
from .models import Topic, Entry
from .forms import TopicForm, EntryForm
--snip--
def edit_entry(request, entry_id):
 """编辑既有条目"""
1 entry = Entry.objects.get(id=entry_id)
topic = entry.topic
 if request.method != 'POST':
 # 初次请求,使用当前条目填充表单
2 form = EntryForm(instance=entry)
 else:
 # POST提交的数据,对数据进行处理
3 form = EntryForm(instance=entry, data=request.POST)
 if form.is_valid():
4 form.save()
5 return HttpResponseRedirect(reverse('learning_logs:topic',
 args=[topic.id]))
 context = {'entry': entry, 'topic': topic, 'form': form}
 return render(request, 'learning_logs/edit_entry.html', context)

我们首先需要导入模型Entry。在1处,我们获取用户要修改的条目对象,以及与该条目相 关联的主题。在请求方法为GET时将执行的if代码块中,我们使用实参instance=entry创建一个 EntryForm实例(见2)。这个实参让Django创建一个表单,并使用既有条目对象中的信息填充它。 用户将看到既有的数据,并能够编辑它们。

处理POST请求时,我们传递实参instance=entry和data=request.POST(见3),让Django根 据既有条目对象创建一个表单实例,并根据request.POST中的相关数据对其进行修改。然后,我 们检查表单是否有效,如果有效,就调用save(),且不指定任何实参(见4)。接下来,我们重 定向到显示条目所属主题的页面(见5),用户将在其中看到其编辑的条目的新版本。

3. 模板edit_entry

下面是模板edit_entry.html,它与模板new_entry.html类似:

edit_entry.html
{% extends "learning_logs/base.html" %}
{% block content %}
 <p><a href="{% url 'learning_logs:topic' topic.id %}">{{ topic }}</a></p>
 <p>Edit entry:</p>
1 <form action="{% url 'learning_logs:edit_entry' entry.id %}" method='post'>
 {% csrf_token %}
 {{ form.as_p }}
2 <button name="submit">save changes</button>
 </form>
{% endblock content %}

在1处,实参action将表单发回给函数edit_entry()进行处理。在标签{% url %}中,我们将 条目ID作为一个实参,让视图对象能够修改正确的条目对象。我们将提交按钮命名为save changes,以提醒用户:单击该按钮将保存所做的编辑,而不是创建一个新条目(见2)。

4. 链接到页面edit_entry

现在,在显示特定主题的页面中,需要给每个条目添加到页面edit_entry的链接:

topic.html
--snip--
 {% for entry in entries %}
 <li>
 <p>{{ entry.date_added|date:'M d, Y H:i' }}</p>
 <p>{{ entry.text|linebreaks }}</p>
 <p>
 <a href="{% url 'learning_logs:edit_entry' entry.id %}">edit entry</a>
 </p>
 </li>
--snip--

我们将编辑链接放在每个条目的日期和文本后面。在循环中,我们使用模板标签{% url %} 根据URL模式edit_entry和当前条目的ID属性(entry.id)来确定URL。链接文本为"edit entry", 它出现在页面中每个条目的后面。图19-3显示了包含这些链接时,显示特定主题的页面是什么 样的。

关于“Python”的核心知识点整理大全57,掌握Python分类专栏:开启智能数据处理之旅!,python,python,前端,javascript,笔记,开发语言

至此,“学习笔记”已具备了需要的大部分功能。用户可添加主题和条目,还可根据需要查 看任何一组条目。在下一节,我们将实现一个用户注册系统,让任何人都可向“学习笔记”申请 账户,并创建自己的主题和条目。

19.2 创建用户账户

在这一节,我们将建立一个用户注册和身份验证系统,让用户能够注册账户,进而登录和注销。我们将创建一个新的应用程序,其中包含与处理用户账户相关的所有功能。我们还将对模型 Topic稍做修改,让每个主题都归属于特定用户。

19.2.1 应用程序 users

我们首先使用命令startapp来创建一个名为users的应用程序:

(ll_env)learning_log$ python manage.py startapp users
(ll_env)learning_log$ ls
1 db.sqlite3 learning_log learning_logs ll_env manage.py users
(ll_env)learning_log$ ls users
2 admin.py __init__.py migrations models.py tests.py views.py

这个命令新建一个名为users的目录(见1),其结构与应用程序learning_logs相同(见2)。

1. 将应用程序users添加到settings.py中

在settings.py中,我们需要将这个新的应用程序添加到INSTALLED_APPS中,如下所示:

settings.py
--snip--
INSTALLED_APPS = (
 --snip--
 # 我的应用程序
 'learning_logs',
 'users',
)
--snip-- 

这样,Django将把应用程序users包含到项目中。

2. 包含应用程序users的URL

接下来,我们需要修改项目根目录中的urls.py,使其包含我们将为应用程序users定义的URL:

urls.py
from django.conf.urls import include, url
from django.contrib import admin
urlpatterns = [
 url(r'^admin/', include(admin.site.urls)),
 url(r'^users/', include('users.urls', namespace='users')),
 url(r'', include('learning_logs.urls', namespace='learning_logs')),
] 

我们添加了一行代码,以包含应用程序users中的文件urls.py。这行代码与任何以单词users 打头的URL(如http://localhost:8000/users/login/)都匹配。我们还创建了命名空间'users',以便 将应用程序learning_logs的URL同应用程序users的URL区分开来。

19.2.2 登录页面

我们首先来实现登录页面的功能。为此,我们将使用Django提供的默认登录视图,因此URL 模式会稍有不同。在目录learning_log/users/中,新建一个名为urls.py的文件,并在其中添加如下 代码:

urls.py
"""为应用程序users定义URL模式"""
from django.conf.urls import url
1 from django.contrib.auth.views import login
from . import views
urlpatterns = [
 # 登录页面
2 url(r'^login/$', login, {'template_name': 'users/login.html'},
 name='login'),
] 

我们首先导入了默认视图login(见1)。登录页面的URL模式与URL http://localhost:8000/ users/login/匹配(见2)。这个URL中的单词users让Django在users/urls.py中查找,而单词login让 它将请求发送给Django默认视图login(请注意,视图实参为login,而不是views.login)。鉴于 我们没有编写自己的视图函数,我们传递了一个字典,告诉Django去哪里查找我们将编写的模板。 这个模板包含在应用程序users而不是learning_logs中。

1. 模板login.html

用户请求登录页面时,Django将使用其默认视图login,但我们依然需要为这个页面提供模 板。为此,在目录learning_log/users/中,创建一个名为templates的目录,并在其中创建一个名为 users的目录。以下是模板login.html,你应将其存储到目录learning_log/users/templates/users/中:

login.html
{% extends "learning_logs/base.html" %}
{% block content %}
1 {% if form.errors %}
<p>Your username and password didn't match. Please try again.</p>
{% endif %}
2 <form method="post" action="{% url 'users:login' %}">
{% csrf_token %}
3 {{ form.as_p }}
4 <button name="submit">log in</button>
5 <input type="hidden" name="next" value="{% url 'learning_logs:index' %}" />
 </form> 
{% endblock content %} 

这个模板继承了base.html,旨在确保登录页面的外观与网站的其他页面相同。请注意,一个 应用程序中的模板可继承另一个应用程序中的模板。

如果表单的errors属性被设置,我们就显示一条错误消息(见1),指出输入的用户名—密码 对与数据库中存储的任何用户名—密码对都不匹配。

我们要让登录视图处理表单,因此将实参action设置为登录页面的URL(见2)。登录视图 将一个表单发送给模板,在模板中,我们显示这个表单(见3)并添加一个提交按钮(见4)。 在5处,我们包含了一个隐藏的表单元素——'next',其中的实参value告诉Django在用户成功登 录后将其重定向到什么地方——在这里是主页。

2. 链接到登录页面

下面在base.html中添加到登录页面的链接,让所有页面都包含它。用户已登录时,我们不想 显示这个链接,因此将它嵌套在一个{% if %}标签中:

base.html
<p>
 <a href="{% url 'learning_logs:index' %}">Learning Log</a> -
 <a href="{% url 'learning_logs:topics' %}">Topics</a> -
1 {% if user.is_authenticated %}
2 Hello, {{ user.username }}.
{% else %}
3 <a href="{% url 'users:login' %}">log in</a>
{% endif %}
</p>
{% block content %}{% endblock content %} 

在Django身份验证系统中,每个模板都可使用变量user,这个变量有一个is_authenticated 属性:如果用户已登录,该属性将为True,否则为False。这让你能够向已通过身份验证的用户 显示一条消息,而向未通过身份验证的用户显示另一条消息。

在这里,我们向已登录的用户显示一条问候语(见1)。对于已通过身份验证的用户,还设 置了属性username,我们使用这个属性来个性化问候语,让用户知道他已登录(见2)。在3处, 对于还未通过身份验证的用户,我们再显示一个到登录页面的链接。

3. 使用登录页面

前面建立了一个用户账户,下面来登录一下,看看登录页面是否管用。请访问 http://localhost:8000/admin/,如果你依然是以管理员的身份登录的,请在页眉上找到注销链接并 单击它。

注销后,访问http://localhost:8000/users/login/,你将看到类似于图19-4所示的登录页面。输入 你在前面设置的用户名和密码,将进入页面index。。在这个主页的页眉中,显示了一条个性化问 候语,其中包含你的用户名。


关于“Python”的核心知识点整理大全37-CSDN博客

关于“Python”的核心知识点整理大全25-CSDN博客

关于“Python”的核心知识点整理大全12-CSDN博客文章来源地址https://www.toymoban.com/news/detail-821573.html

往期快速传送门👆(在文章最后):

感谢大家的支持!欢迎订阅收藏!专栏将持续更新!

到了这里,关于关于“Python”的核心知识点整理大全57的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 关于“Python”的核心知识点整理大全38

    关于“Python”的核心知识点整理大全38

    由于Pygame没有内置创建按钮的方法,我们创建一个Button类,用于创建带标签的实心矩形。 你可以在游戏中使用这些代码来创建任何按钮。下面是Button类的第一部分,请将这个类保存为 文件button.py: button.py 首先,我们导入了模块pygame.font,它让Pygame能够将文本渲染到屏幕上。

    2024年02月03日
    浏览(15)
  • 关于“Python”的核心知识点整理大全8

    关于“Python”的核心知识点整理大全8

    目录 ​编辑 4.5 元组 4.5.1 定义元组 dimensions.py 4.5.2 遍历元组中的所有值 4.5.3 修改元组变量 4.6 设置代码格式 4.6.1 格式设置指南 4.6.2 缩进 4.6.3 行长 4.6.4 空行 4.6.5 其他格式设置指南 4.7 小结 第5章 if语句 5.1 一个简单示例 cars.py 5.2 条件测试 5.2.1 检查是否相等 5.2.2 检查是否相等

    2024年02月05日
    浏览(13)
  • 关于“Python”的核心知识点整理大全45

    关于“Python”的核心知识点整理大全45

    目录 15.4.6 绘制直方图 die_visual.py 注意 15.4.7 同时掷两个骰子 dice_visual.py 15.4.8 同时掷两个面数不同的骰子 different_dice.py 15.5 小结 第 16 章 16.1 CSV 文件格式 16.1.1 分析 CSV 文件头 highs_lows.py 注意 16.1.2 打印文件头及其位置 highs_lows.py 往期快速传送门👆(在文章最后): 感谢大家

    2024年02月04日
    浏览(8)
  • 关于“Python”的核心知识点整理大全25

    关于“Python”的核心知识点整理大全25

    目录 10.3.4 else 代码块、 10.3.5 处理 FileNotFoundError 异常 alice.py 在这个示例中,try代码块引发FileNotFoundError异常,因此Python找出与该错误匹配的 except代码块,并运行其中的代码。最终的结果是显示一条友好的错误消息,而不是traceback: 10.3.6 分析文本 10.3.7 使用多个文件 word_cou

    2024年02月04日
    浏览(13)
  • 关于“Python”的核心知识点整理大全49

    关于“Python”的核心知识点整理大全49

      目录 16.2.10 加亮颜色主题 16.3 小结 第17 章 使用API 17.1 使用 Web API 17.1.1 Git 和 GitHub 17.1.2 使用 API 调用请求数据 17.1.3 安装 requests 17.1.4 处理 API 响应 python_repos.py 注意 17.1.5 处理响应字典 python_repos.py Pygal样式存储在模块style中,我们从这个模块中导入了样式RotateStyle(见1)。

    2024年02月02日
    浏览(12)
  • 关于“Python”的核心知识点整理大全60

    关于“Python”的核心知识点整理大全60

    目录 19.4 小结 第 20 章 设置应用程序的样式并对其 进行部署 20.1 设置项目“学习笔记”的样式 20.1.1 应用程序 django-bootstrap3 settings.py settings.py 20.1.2 使用 Bootstrap 来设置项目“学习笔记”的样式 20.1.3 修改 base.html 1. 定义HTML头部 base.html 2. 定义导航栏 3. 定义页面的主要部分 往期

    2024年01月17日
    浏览(22)
  • 关于“Python”的核心知识点整理大全27

    关于“Python”的核心知识点整理大全27

    目录 10.5 小结 第11 章 测试代码 11.1 测试函数 name_function.py 函数get_formatted_name()将名和姓合并成姓名,在名和姓之间加上一个空格,并将它们的 首字母都大写,再返回结果。为核实get_formatted_name()像期望的那样工作,我们来编写一个 使用这个函数的程序。程序names.py让用户输

    2024年02月01日
    浏览(9)
  • 关于“Python”的核心知识点整理大全12

    关于“Python”的核心知识点整理大全12

    目录 6.3.3 按顺序遍历字典中的所有键 6.3.4 遍历字典中的所有值 6.4 嵌套 6.4.1 字典列表 aliens.py 6.4.2 在字典中存储列表 pizza.py favorite_languages.py 注意 往期快速传送门👆(在文章最后): 6.3.3 按顺序遍历字典中的所有键 字典总是明确地记录键和值之间的关联关系,但获取字典的

    2024年02月05日
    浏览(11)
  • 关于“Python”的核心知识点整理大全21

    关于“Python”的核心知识点整理大全21

    在Python 2.7中,继承语法稍有不同,ElectricCar类的定义类似于下面这样: 函数super()需要两个实参:子类名和对象self。为帮助Python将父类和子类关联起来,这些 实参必不可少。另外,在Python 2.7中使用继承时,务必在定义父类时在括号内指定object。 9.3.3 给子类定义属性和方法

    2024年01月16日
    浏览(12)
  • 关于“Python”的核心知识点整理大全11

    关于“Python”的核心知识点整理大全11

    目录 ​编辑 6.2.4 修改字典中的值  6.2.5 删除键—值对 注意 删除的键—值对永远消失了。  6.2.6 由类似对象组成的字典 6.3 遍历字典 6.3.1 遍历所有的键—值对 6.3.2 遍历字典中的所有键 往期快速传送门👆(在文章最后): 6.2.4 修改字典中的值 要修改字典中的值,可依次指定

    2024年02月05日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包