models.py:

# 用户信息表
class UserProfile(models.Model):belong_to = models.OneToOneField(to=User, related_name="profile")  # 所属用户avatar = models.FileField(upload_to='avatar')  # 用户头像def __str__(self):return self.belong_to.username

views.py:

def register(request):if request.method == 'GET':form = RegisterForm()if request.method == 'POST':form = RegisterForm(request.POST)print('ppppost')if form.is_valid():username = form.cleaned_data.get("username")email = form.cleaned_data.get("email")password = form.cleaned_data.get("password")user = User(username=username,email=email)user.set_password(password)user.save()                                                         #创建用户保存userprofile = UserProfile(belong_to=user,avatar='avatar/avatar.png')userprofile.save()                                                  #创建该用户的资料return redirect(to='login')else:print(form.errors)context={}context['form']=formreturn render(request,'register.html',context=context)

forms.py:

class RegisterForm(forms.Form):username = forms.CharField(widget=forms.TextInput(attrs={'placeholder':'用户名'}))email = forms.CharField(widget=forms.TextInput(attrs={'placeholder':'邮箱'}))password = forms.CharField(widget=forms.PasswordInput(attrs={'placeholder':'密码'}))password_confirm = forms.CharField(widget=forms.PasswordInput(attrs={'placeholder':'确认密码'}))def clean(self):cleaned_data = super(RegisterForm,self).clean()username = cleaned_data.get("username")email = cleaned_data.get("email")password = cleaned_data.get("password")password_confirm = cleaned_data.get("password_confirm")if User.objects.filter(username=username):raise forms.ValidationError("用户已存在")if User.objects.filter(email=email):raise forms.ValidationError("该邮箱已被注册")try:validate_email(email)except ValidationError:raise forms.ValidationError("不正确的邮箱格式")if len(password) < 6:raise forms.ValidationError("密码长度至少6位")if password_confirm != password:raise forms.ValidationError("两次输入的密码不一致")

模板css register.css:

body{background-image:url(../images/login/backgroundimg.png);background-size: cover;background-repeat: no-repeat;
}
.ui.basic.segment.container.content{width: 425px;margin-left: 50%;margin-top: 389px;
}
.ui.header{color:red;font-size: 50px !important;height: 75px;
}
input{border-radius: 31.5px!important;height: 31px!important;background-color: #ffffff!important;border: solid 1px #ededed!important;
}
.field{position: relative;
}
.ui.image.top{position: absolute;left: -20px;top:10px;
}
.ui.red.button.register{border-radius: 32px;height: 30px;width: 400px;padding-top: 8px;
}
.ui.basic.segment.container.footer{position: relative;margin-top: 150px;
}
.ui.circular.red.button.backtoindex{width: 31px!important;height: 62px;border-radius: 15.5px;background-color: #f30c28;position: absolute;transform: translate(-50%,-50%);left: 50%;top:30px;padding: 0;
}
img{margin-left: 2px;
}
h4{font-size: 12px!important;color: #ffffff;margin-left: 2px;
}
.ui.image.title{position: relative;transform: translate(-50%);left: 50%;top:45px;
}

模板文件 register.html:

<!DOCTYPE html>
{% load staticfiles %}
<html><head><meta charset="utf-8"><title>注册页</title><link rel="stylesheet" href="{% static 'css/semantic.css' %}" media="screen" title="no title" charset="utf-8"><link rel="stylesheet" href="{% static 'css/register.css' %}" media="screen" title="no title" charset="utf-8"></head><body><div class="ui basic segment container content"><h1 class="ui center aligned header">注册</h1><form class="ui form error" method="post">{% if form.errors %}<div class="ui error message">{{ form.errors }}</div>{% endif %}<div class="field"><div class="ui  image top"><img src="{% static 'images/login/usericon.png' %}" alt="" /></div>{{form.username}}</div><div class="field"><div class="ui  image top"><img src="{% static 'images/login/checkboxicon.png' %}" alt="" /></div>{{form.email}}</div><div class="field"><div class="ui  image top"><img src="{% static 'images/login/lockicon.png' %}" alt="" /></div>{{form.password}}</div><div class="field"><div class="ui  image top"><img src="{% static 'images/login/lockicon.png' %}" alt="" /></div>{{form.password_confirm}}</div>{% csrf_token %}<div class="field"><button type="submit" class="ui red button register">注册</button></div></form></div><div class="ui basic segment container footer"><div class="bottom"><div class="ui divider"></div><button type="button" name="button" class="ui circular red button backtoindex"><img src="{% static 'images/login/homeicon.png' %}" style="position:absolute;left:18%;top:10%;"><h4>首页</h4></button><div class="ui image title"><img src="{% static 'images/login/zhiribao.png' %}" alt="" /></div></div></div></body>
</html>

urls.py:

url(r'^register/', register, name='register')

转载于:https://www.cnblogs.com/xyxpython/p/6725640.html

新闻网站项目django--注册页相关推荐

  1. Python新闻网站项目-5.Django新闻网站前后端展示

    我的第一个 Django开发项目,虽然完整代码已经经过时间的流失已经遗失,还是当时有记笔记的习惯,留存至今. 基于基于Python基于Scrapy+Gerapy+NLP+Django搭建的新闻整套系统 ...

  2. JS实现简单的登录注册页签

    项目要求: 利用前端知识编写一个简单的网站登录和注册页签.登录和注册功能均在同一页面,点击登录按键就进入登录操作,点击注册按键则进入用户的注册操作.其中,登录和注册的内容和大部分网站的登录注册内容一直 ...

  3. 仿制CSDN首页(html+css+js)+ 个性化登录注册页

    前言:为了强化基本功,不使用任何框架和样式预处理器制作一个包含csdn官网全部动画的小项目,但是为了避免过于死板,自己制作了一个 logo 和一个很有个性的登录页面(包含有趣的小熊图案和动画). 技术 ...

  4. 如何自学python到做项目-django教程如何自学

    Django教程是讲解Django框架学习方法和步骤的,可以理解为教材,是供初学者或者程序员学习和提升技术的. 下面介绍下Django教程所包含的内容以及学Django所需要的必备技能. 学Djang ...

  5. python视图函数是什么_python项目Django(视图函数)

    一 Django的视图函数view 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个404错 ...

  6. python编程django项目django.template.exceptions.TemplateDoesNotExist: registration/login.html解决方法

    文章目录 遇到的问题 解决方法 参考 遇到的问题 做<python编程:从入门到实践>的web项目:学习笔记. 在19章,遇到问题:添加user应用程序,编写完login.html,进行浏 ...

  7. python中型项目---Django框架---图书管理网站的制作-01

    图书管理网站的制作详解(个人学习django框架的笔记) 第01号笔记最终成果图: 当前笔记所完成的网站的功能简介: 1 网页从数据库获得图书名称 2 点击新增按钮后增加一本书,当前名为"流 ...

  8. 新创建的Django项目Django administration用户名和密码配置

    目录 背景信息 解决办法 执行python manage.py createsuperuser 执行python manage.py migrate 再次执行python manage.py crea ...

  9. 2020-5-13从0在mac上搭载SSM新闻网站项目

    1.安装java环境jdk 2.安装tomcat 3.安装eclipse 4.安装maven 安装方法参考:在mac安装tomcat方法 在mac安装mavern方法 5.安装mysql5.7 不要安 ...

最新文章

  1. python面试-Python面试中常见的3个问题
  2. 知识图谱 (知识计算推理)
  3. 基于 Redis 实现的分布式锁
  4. ustc小道消息20220112
  5. Apache下如何禁止指定目录运行PHP脚本
  6. 重载-运算符(感觉怪怪的)
  7. Codeforces Round #716 (Div. 2) D. Cut and Stick 主席树 + 思维
  8. sqlite3 出错
  9. [导入]完成可脚本调用的视频录制控件
  10. 数据采集:如何自动化采集数据?
  11. 图像拼接——APAP算法
  12. 递归算法计算二叉树中叶子结点数目 c语言,编写递归算法,计算二叉树中叶子结点的数目。...
  13. Java解析JSON大文件解决方案之JsonReader
  14. 外文图书免费下载网站
  15. 风口的猪-中国牛市(小米2016校招)
  16. pytoch矩阵乘法torch.bmm
  17. DDN(数字数据网)
  18. 羽毛球单打比赛中谁先发球以及在哪个区域发球?
  19. 青岛智能物联网产才融合中心成立,山东大学携手百度飞桨海尔海纳云等共育AI人才...
  20. qp系统激活服务器异常,电子口岸系统QP服务器异常早上开始,电子口 – 手机爱问...

热门文章

  1. WINDOWS SERVER 2003 组策略应用
  2. Apache配置--用户认证(针对目录访问)-update2015-05-02
  3. 3 文件读写 计时 我的烂电脑在1S钟能写70多MB的数据
  4. 动态生成treeview
  5. [转]pthread用于进程间通信
  6. ajax传递对象数组
  7. python接口测试-认识GET请求
  8. HW2017笔试编程题
  9. LeetCode之283. Move Zeroes
  10. Domain Driven Design