当前位置: 首页 > news >正文

Python 从0开始 一步步基于Django创建项目(11)注册新用户

1、修改C:\D\Python\Python310\study\snap_gram\users路径下的urls.py

添加‘注册新用户’URL。

#注册新用户
path('register/',views.register,name='register'),

2、修改C:\D\Python\Python310\study\snap_gram\users路径下的views.py

编写URL对应的视图函数register。

def register(request):if request.method != 'POST':form = UserCreationForm()else:# 处理填写好的表单form = UserCreationForm(data=request.POST)if form.is_valid():new_user = form.save()# 让用户自动登录,再重定向到主页。login(request,new_user)return redirect('city_infos:index')# 显示空表单或指出表单无效。context = {'form':form}return render(request,'registration/register.html', context)

该函数中使用了UserCreationForm表单类,以及login()方法。需要再文件中import这两项内容。

from django.contrib.auth import login
from django.contrib.auth.forms import UserCreationForm

3、新建C:\D\Python\Python310\study\snap_gram\users\templates\registration路径下的register.html

<!-- 一个应用程序中的模板可继承另一个应用程序中的模板 -->
{% extends "city_infos/base.html" %}{% block content %}<!-- 对提交的注册信息进行处理 --><form method="post" action="{% url 'users:register' %}">{% csrf_token %}{{ form.as_p }}<!-- 显示表单内容 --><button name="submit">注册</button><!-- next:登录后重定向 --><input type="hidden" name="next"value="{% url 'city_infos:index' %}" /></form>
{% endblock content %}

4、修改C:\D\Python\Python310\study\snap_gram\city_infos\templates\city_infos路径下的base.html

添加‘注册新用户’链接。

{% if user.is_authenticated %}Hello,{{user.username}}.<a href="{% url 'users:custom_logout' %}">注销</a>
{% else %}<a href="{% url 'users:register' %}">注册</a><a href="{% url 'users:login' %}">登录</a>
{% endif %}

相关文章:

  • JumpServer 堡垒主机
  • openEuler 22.03 安装 .NET 8.0
  • 11 开源鸿蒙OpenHarmony轻量系统源码分析
  • 【python】pip清华大学镜像
  • 【css】文本过长溢出一行不换行普通css以及antd实现
  • 插入排序、归并排序、堆排序和快速排序的稳定性分析
  • Kubernetes之Projected Volume
  • 物理寻址和功能寻址,服务器不同的应答策略和NRC回复策略
  • 微信小程序页面生命周期和小程序api组件的生命周期
  • 算法刷题笔记(3.25-3.29)
  • 【Git项目部署到本地仓库】
  • 2024-03-28 Java8之Collectors类
  • MybatisPlus速成
  • Hive查询转换与Hadoop生态系统引擎与优势
  • python---基础(一)
  • 【391天】每日项目总结系列128(2018.03.03)
  • Akka系列(七):Actor持久化之Akka persistence
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • Kibana配置logstash,报表一体化
  • Making An Indicator With Pure CSS
  • Mysql优化
  • 反思总结然后整装待发
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 王永庆:技术创新改变教育未来
  • 小程序01:wepy框架整合iview webapp UI
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • 7行Python代码的人脸识别
  • Mac 上flink的安装与启动
  • 翻译 | The Principles of OOD 面向对象设计原则
  • 通过调用文摘列表API获取文摘
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #define,static,const,三种常量的区别
  • #laravel 通过手动安装依赖PHPExcel#
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • #pragma pack(1)
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (ibm)Java 语言的 XPath API
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (学习日记)2024.01.09
  • (转)VC++中ondraw在什么时候调用的
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .net 8 发布了,试下微软最近强推的MAUI
  • .net Application的目录
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .net wcf memory gates checking failed
  • .NET 中的轻量级线程安全
  • .NET/C# 使用反射注册事件
  • .NetCore 如何动态路由
  • .NET国产化改造探索(一)、VMware安装银河麒麟