《python编程从入门到实践》day39加更

# 昨日知识点回顾

        添加主题、条目

# 今日知识点学习

        19.1.3 编辑条目

                1.URL模式edit——entry

# learning_logs/urls.py
---snip---# 用于编辑条目的页面path('edit_entry/<int:entry_id>/', views.edit_entry, name='edit_entry'),
]

                2.视图函数edit_entry()

# views.py
from django.shortcuts import render, redirect# 导入所需数据相关联的模型
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')def topics(request):"""显示所有的主题"""topics = Topic.objects.order_by('date_added')# 定义一个将要发送模版的上下文context = {'topics': topics}return render(request, 'learning_logs/topics.html', context)def topic(request, topic_id):"""显示单个主题"及所有的条目"""topic = Topic.objects.get(id=topic_id)entries = topic.entry_set.order_by('-date_added')context = {'topic': topic, 'entries': entries}return render(request, 'learning_logs/topic.html', context)def new_topic(request):"""添加新主题"""if request.method != 'POST':# 未提交数据:创建一个新表单form = TopicForm()else:# POST提交的数据:对数据进行处理form = TopicForm(data=request.POST)if form.is_valid():form.save()return redirect('learning_logs:topics')# 显示空表单后指出表单数据无效context = {'form': form}return render(request, 'learning_logs/new_topic.html', context)def new_entry(request, topic_id):"""在特定主题中添加新条目"""topic = Topic.objects.get(id=topic_id)if request.method != 'POST':# 未提交数据:创建一个空表单form = EntryForm()else:# POST提交的数据:对数据进行处理form = EntryForm(data=request.POST)if form.is_valid():new_entry = form.save(commit=False)new_entry.topic = topicnew_entry.save()return redirect('learning_logs:topic', topic_id=topic_id)# 显示空表单或支出表单数据无效context = {'topic': topic, 'form': form}return render(request, 'learning_logs/new_entry.html', context)def edit_entry(request, entry_id):"""编辑既有条目"""entry = Entry.objects.get(id=entry_id)topic = entry.topicif request.method != 'POST':# 初次请求:使用当前条目填充表单form =EntryForm(instance=entry)else:# POST提交的数据:对数据进行处理form = EntryForm(instance=entry, data=request.POST)if form.is_valid():form.save()return redirect('learning_logs:topic', topic_id=topic.id)context = {'entry': entry, 'topic': topic, 'form': form}return render(request, 'learning_logs/edit_entry.html', context)

                3.模版edit_entry                

# 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><form action="{% url 'learning_logs:edit_entry'  entry.id  %}" method='post'>{% csrf_token %}{{  form.as_p  }}<button name="submit">Save changes</button>		</form>{% endblock content %}

                4.链接到页面edit_entry

# topic.html
{% extends 'learning_logs/base.html' %}{% block content %}<p>Topic: {{  topic  }}</p><p>Entries:</p><p><a href="{% url 'learning_logs:new_entry' topic.id %}">Add new entry</a></p><ul>{% 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>{% empty %}<li>There are no entries for this topic yet.</li>{% endfor %}</ul>{% endblock content %}

                浏览器输入localhost:8000/topics/2/显示:

 19.2 创建用户账户

        19.2.1 应用程序users

                使用命令startapp创建一个名为users的应用程序

        19.2.2 将users添加到settings.py中

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

         19.2.3 包含users的URL

# learning_log/urls.py
from django.contrib import admin
from django.urls import path, includeurlpatterns = [path('admin/', admin.site.urls),path('users/', include('users.urls')),path('', include('learning_logs.urls')),
]

        19.2.4 登录界面 

# learning_log\users\urls.py
"""为应用程序users定义URL模式"""from django.urls import path, includeapp_name = 'users'
urlpatterns = [# 包含默认的身份验证URLpath('', include('django.contrib.auth.urls')),
]

                1.模版login.html

# learning_log\users\templates\registration\login.html
{% extends "learning_logs/base.html" %}{% block content %}{% if form.errors %}<p>Your username and password didn't match.Please try again.</p>{% endif %}<p>Edit entry:</p><form method='post' action="{% url 'users:login' %}" >{% csrf_token %}{{  form.as_p  }}<button name="submit">Log in</button><input type="hidden" name="next"value="{% url 'learning_logs:index' %}" />		</form>{% endblock content %}

                2.链接到登录界面        

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

                3.使用登录界面

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/332389.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker搭建mysql性能测试环境

OpenEuler使用Docker搭建mysql性能测试环境 一、安装Docker二、docker安装mysql三、测试mysql连接 一、安装Docker 建立源文件vim /etc/yum.repos.d/docker-ce.repo增加内容[docker-ce-stable] nameDocker CE Stable - $basearch baseurlhttps://repo.huaweicloud.com/docker…

SVM原问题与对偶问题

目的&#xff1a;求出我们的f(X)&#xff0c;它代表着我们X映射到多维的情况&#xff0c;能够帮我们在多维中招到超平面进行分类。 1.优化问题&#xff1a; 1.1推荐好书&#xff1a; 1.2 优化理论中的原问题&#xff1a; 原问题和限制条件如下&#xff1a; 这是一个泛化性…

Linux基础(八):计算机基础概论

本篇博客简单介绍计算机的基础知识&#xff0c;为后续学习做个铺垫。 目录 一、计算机的基本组成 1.1 计算机组成五大部件 1.1.1 运算器&#xff08;Arithmetic Logic Unit&#xff0c;ALU&#xff09; 1.1.2控制器 &#xff08;Control Unit&#xff0c;CU&#xff09; …

网络工程师---第三十八天

ISIS&#xff1a; ISIS含义&#xff1a;中间系统到中间系统IS-IS。 ISIS特点&#xff1a;①内部网关协议IGP&#xff08;Interior Gateway Protocol&#xff09;&#xff0c;用于自治系统内部&#xff1b; ②IS-IS也是一种链路状态协议&#xff0c;使用最短路径优先SPF算法进…

【spring】@ResponseBody注解学习

ResponseBody介绍 ResponseBody 是一个Spring框架中的注解&#xff0c;主要用于Web开发&#xff0c;特别是在Spring MVC框架中。它的核心作用是改变Spring MVC处理HTTP请求响应的行为&#xff0c;使得从控制器方法返回的数据直接写入HTTP响应体&#xff08;Response Body&…

多环境和前后多环境实战

文章目录 一.多环境1.1 什么是多环境1.2 多环境分类1.2.1 本地环境&#xff08;自己的电脑&#xff09;1.2.2 开发环境&#xff08;远程开发&#xff09;1.2.3 测试环境1.2.4 预发布环境1.2.5 正式环境1.2.6 沙箱环境&#xff08;实验环境&#xff09; 1.3 如何实现1.3.1 抽象配…

引流500+创业粉,抖音口播工具

在抖音平台运营一个专注于口播的工具号&#xff0c;旨在集结超过500位热衷于创业的粉丝&#xff0c;这需要精心筹划的内容策略和周到的运营计划。首先&#xff0c;明确你的口播工具号所专注的领域&#xff0c;无论是分享创业经验、财务管理技巧还是案例分析&#xff0c;确保你所…

NL6621 实现获取天气情况

一、主要完成的工作 1、建立TASK INT32 main(VOID) {/* system Init */SystemInit();OSTaskCreate(TestAppMain, NULL, &sAppStartTaskStack[NST_APP_START_TASK_STK_SIZE -1], NST_APP_TASK_START_PRIO); OSStart();return 1; } 2、application test task VOID TestAp…

外卖小程序开发指南:从源码开始构建高效的外卖平台

今天&#xff0c;笔者将为您详细讲解如何从源码开始构建一个高效的外卖小程序&#xff0c;帮助您快速进入这一蓬勃发展的市场。 一、需求分析与设计 需求分析包括&#xff1a; 1.用户需求 2.市场需求 3.技术需求 二、前端开发 以下是开发步骤&#xff1a; -使用微信开发…

【论文阅读】Prompt Fuzzing for Fuzz Driver Generation

文章目录 摘要一、介绍二、设计2.1、总览2.2、指导程序生成2.3、错误程序净化2.3.1、执行过程净化2.3.2、模糊净化2.3.3、覆盖净化 2.4、覆盖引导的突变2.4.1、功率调度2.4.2、变异策略 2.5、约束Fuzzer融合2.5.1、论据约束推理2.5.1、模糊驱动融合 三、评估3.1、与Hopper和OSS…

使用梦畅闹钟,结合自定义bat、vbs脚本等实现定时功能

梦畅闹钟-每隔一段时间运行一次程序 休息五分钟bat脚本&#xff08;播放音乐视频&#xff0c;并锁屏&#xff09; chcp 65001 echo 回车开始休息5分钟 pause explorer "https://www.bilibili.com/video/BV1RT411S7Tk/?p47" timeout /t 3 /nobreak rundll32.exe use…

变分自动编码器(VAE)深入理解与总结

本文导航 0 引言1 起源1.1 自编码器的任务定义1.2 自编码器存在的问题1.3 VAE的核心思路 2 VAE的建模过程2.1 VAE的任务定义2.2 真实分布 ϕ \phi ϕ是什么&#xff0c;为什么要逼近这个分布的参数&#xff0c;如何做&#xff1f;2.3 “重参数化&#xff08;Reparameterization…

前端开发工程师——数据可视化

canvas canvas绘制线段 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthd…

渗透工具CobaltStrike工具的下载和安装

一、CobalStrike简介 Cobalt Strike(简称为CS)是一款基于java的渗透测试工具&#xff0c;专业的团队作战的渗透测试工具。CS使用了C/S架构&#xff0c;它分为客户端(Client)和服务端(Server)&#xff0c;服务端只要一个&#xff0c;客户端可有多个&#xff0c;多人连接服务端后…

CST初级教程 六

本篇教程将以差分线为例&#xff0c;实例讲解参数化建模及参数扫描。 一 Project创建 点击New and Recent&#xff0c;再点击New Template 点击MICROVAVES & RF/OTICAL&#xff0c;然后在选中Circuit & Components。 点击对话框中Next按钮&#xff0c;在弹出对话框…

WPF之容器标签之Canvas布局标签

Canvas: 定义一个区域&#xff0c;可在其中使用相对于 Canvas 区域的坐标以显式方式来定位子元素。 实例 可以在子标签使用Canvas属性设置定位 <Canvas Width"500" Height"300"><StackPanel Width"100" Height"100"Backgro…

【C#】未能加载文件或程序集“CefSharp.Core.Runtime.dll”或它的某一个依赖项。找不到指定的模块。

欢迎来到《小5讲堂》 这是《C#》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 背景错误提示分析原因解决方法Chromium知识点相关文章 背景 最近在使…

c语言:模拟strlen(三种方法)最全版本

1.计数的方法 #include <stdio.h> #include <assert.h> int my_strlen(const char * str)//const的使用优化 {int count0;assert(str)while(*str){count;str;}return count; } 2.用指针的方法&#xff08;指针-指针&#xff09; #include <stdio.h> #incl…

unity开发Hololens 制作滑动框

一定要做到最后一步&#xff0c;才会有效果 1、创建空物体 ,并添加组件 创建空物体 命名ScrollingObjectCollection&#xff0c; 添加组件如下图 下面是各个组件展开的内容 2、在ScrollingObjectCollection 下面创建两个空物体&#xff0c;分别命名Container、Clipping…