python Django注册页面显示头像
python Django注册页面显示头像(views)
def register(request):
'''
注册
:param request:
:return:
'''
if request.method=='GET':
obj = Register(request)
return render(request, 'register.html', {'obj': obj})
else:
obj = Register(request,request.POST,request.FILES)
if obj.is_valid():
print(obj.cleaned_data)
yzms_list = obj.cleaned_data.pop('yzm')
yzms1_list = obj.cleaned_data.pop('password2')
users=models.UserInfo.objects.filter(username=obj.cleaned_data['username'])
emails=models.UserInfo.objects.filter(email=obj.cleaned_data['email'])
if users or emails:
return render(request, 'register.html', {'obj': obj,'mmg':'用户已存在!','eml':'邮箱已注册!'})
else:
if avatar_lis:
obj.cleaned_data['avatar']=avatar_lis[-1]
models.UserInfo.objects.create(**obj.cleaned_data)
return redirect('/login/')
else:
obj.cleaned_data['avatar'] = '\static\8.png'
models.UserInfo.objects.create(**obj.cleaned_data)
return redirect('/login/')
return render(request,'register.html', {'obj': obj})
============================================================================html=========================================================================
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" href="/static/plugins/bootstrap-3.3.7-dist/css/bootstrap.css" />
<style>
.login{
width: 600px;
margin: 0 auto;
padding: 20px;
margin-top: 80px;
}
.f1{
position: absolute;height:80px;width: 80px;top:0;left: 0;opacity: 0;
} </style>
</head>
<body>
<div class="login">
<h3>用户注册</h3>
<form id="fs" class="form-horizontal" action="/Avatar/" method="POST" target="ifr" enctype="multipart/form-data" novalidate >
{% csrf_token %}
<div style="position: relative;height:80px;width: 80px;">
<img id="previewImg" style="height:80px;width: 80px;" src="/static/8.png">
<iframe style="display: none" src="/Avatar/" id="ifr" name="ifr" frameborder="0"></iframe>
{{ obj.avatar }}
</div>
</form>
<form class="form-horizontal" method="POST" action="/register/" novalidate >
{% csrf_token %}
<div class="form-group">
<label class="col-sm-2 control-label">用户名</label>
<div class="col-sm-10">
{{ obj.username }}
{{ mmg }}
{{ obj.errors.username.0 }}
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">昵称</label>
<div class="col-sm-10">
{{ obj.nickname }}
{{ obj.errors.nickname.0 }}
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">邮箱</label>
<div class="col-sm-10">
{{ obj.email }}
{{ eml }}
{{ obj.errors.email.0 }}
</div> </div>
<div class="form-group">
<label class="col-sm-2 control-label">密码</label>
<div class="col-sm-10">
{{ obj.password }}
{{ obj.errors.password.0 }}
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">密码</label>
<div class="col-sm-10">
{{ obj.password2 }}
{{ obj.errors.password2.0 }}
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">验证码</label>
<div class="col-sm-5">
{{ obj.yzm }}
{{ obj.errors.yzm.0 }}
</div>
<div class="col-sm-5">
<img onclick="imgs(this)" style="width: 120px;height: 30px;" src="/check_code/" title="点击更新图片">
</div>
</div> <div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<input type="submit" class="btn btn-default" value="注册"/>
</div>
</div>
</form>
</div>
<script src="/static/jquery-3.2.1.js"></script>
<script>
function imgs(ths) {
ths.src = ths.src+'?'
} $(function () {
bindAvatar1()
}); function bindAvatar() {
if (window.URL.createObjectURL){
bindAvatar2()
}else if (window.FileReader){
bindAvatar3()
}else{
bindAvatar1()
}
这是一个流程使用控制,先进行检测如果浏览器支持第一种就执行第一种,以次类推之到最后的方式(这个方式不会出现浏览器不兼容现象)
} Ajax上传方式(需要把头像发送到后端在获取)
function bindAvatar1() {
$('#imgSelect').change(function () {
var obj = $(this)[0].files[0];
document.getElementById('ifr').onload=Idndfes;
$('#fs').submit()
})
}
function Idndfes() {
var content =document.getElementById('ifr').contentWindow.document.body.innerText;
tag='/'+content;
$('#previewImg').attr('src',tag) }
本地上传预览(在当前就能预览)
function bindAvatar2() {
$('#imgSelect').change(function () {
var obj = $(this)[0].files[0];
// Ajax发送后台,并获取路径
// img.src = 获取路径
var v=window.URL.createObjectURL(obj);
$('#previewImg').attr('src',v);
$('#previewImg').load(function () {
window.URL.revokeObjectURL(v)
})
})
} function bindAvatar3() {
$('#imgSelect').change(function () {
var obj = $(this)[0].files[0];
// Ajax发送后台,并获取路径
// img.src = 获取路径
var reader = new FileReader();
reader.onload = function () {
$('#previewImg').attr('src',this.result)
};
reader.readAsDataURL(obj);
})
} </script>
</body>
</html>
标签分组(views)
def tag_s(request,tag_nick,site):
'''
标签分组
:param request:
:param tag_nick:
:param site:
:return:
'''
tag_list=models.Tag.objects.filter(title=tag_nick,blog__site=site)
print(tag_list)
return render(request,'tag_s.html',{'tag_list':tag_list})
标签分组(html)
{% extends 'template.html' %}
{% block ys %}
{% endblock %}
{% block xxs %}
<h3>标签文章</h3>
{% for i in tag_list %}
{% for row in i.article2tag_set.all %}
<h3><a href="/xiangxi/{{ request.session.user.user }}/{{ row.article.nid }}/">{{ row.article.title }}</a></h3>
<div class="art-body clearfix">
<img style="float: left" src="{{ row.article.blog.user.avatar }}" alt="">
<a href="/xiangxi/{{ request.session.user.user }}/{{ row.article.nid }}/">{{ row.article.summary }}</a>
</div>
<p><i class="fa fa-user-o" aria-hidden="true"></i>
<a href="">{{ row.article.blog.user.username }}</a>
发布于
<a href="">{{ row.article.blog.user.create_time }}</a>
<i class="fa fa-commenting-o" aria-hidden="true"></i>
<a href="">{{ row.article.read_count }}</a>
<i class="fa fa-thumbs-o-up" aria-hidden="true"></i>
<a href="">{{ row.article.up_count }}</a>
</p>
<hr style="border:0.5px dotted darkgray"/>
{% endfor %}
{% endfor %}
{% endblock %}
分类分组(views)
def fenlei(request,fenle_nick,site):
'''
分类分组
:param request:
:param fenle_nick:
:param site:
:return:
'''
print(fenle_nick,site)
fenle_list=models.Category.objects.filter(title=fenle_nick,blog__site=site)
print(fenle_list)
return render(request,'fenlei.html',{'fenle_list':fenle_list})
分类分组(html)
{% extends 'template.html' %}
{% block ys %}
{% endblock %}
{% block xxs %}
<h3>分类文章</h3>
{% for row in fenle_list %}
{% for i in row.article_set.all %}
<h3><a href="/xiangxi/{{ request.session.user.user }}/{{ i.nid }}/">{{ i.title }}</a></h3>
<div class="art-body clearfix">
<img style="float: left; width:80px;height: 80px" src="{{ i.blog.user.avatar }}" alt="">
<h4><a href="/xiangxi/{{ request.session.user.user }}/{{ i.nid }}/">{{ i.summary }}</a></h4>
</div>
<p><i class="fa fa-user-o" aria-hidden="true"></i>
<a href="">{{ i.blog.user.username }}</a>
发布于
<a href="">{{ i.blog.user.create_time }}</a>
<i class="fa fa-commenting-o" aria-hidden="true"></i>
<a href="">{{ i.read_count }}</a>
<i class="fa fa-thumbs-o-up" aria-hidden="true"></i>
<a href="">{{ i.up_count }}</a>
</p>
<hr style="border:0.5px dotted darkgray"/>
{% endfor %}
{% endfor %}
{% endblock %}
个人主页(views)
def home(request,site):
'''
个人主页
:param request:
:param site:
:return:
'''
tags_dit={}
corts_dit={}
times_dit={}
tags=models.Article2Tag.objects.filter(tag__blog__site=site).values('tag','tag__title').annotate(c=Count(1))
通过annotate进行组合分组
for i in tags:
tags_dit[i['tag__title']]=i['c']
print(tags_dit)
corts=models.Article.objects.filter(blog__site=site).values('category','category__title').annotate(x=Count(1))
for i in corts:
corts_dit[i['category__title']]=i['x']
times=models.Article.objects.filter(blog__site=site).extra(select={'c':'strftime("%%Y-%%m")'}).values('c').annotate(cx=Count(1))
使用sqllist数据库的一种转换格式(组合分组是使用的extra)
for i in times:
times_dit[i['c']]=i['cx']
fen=models.UserInfo.objects.filter(blog__site=site)
guanzhu=models.UserFans.objects.filter(user__blog__site=site).values('follower').annotate(s=Count(1))
art_count=models.Article.objects.filter(blog__site=site).count()
page_info=PageInfo(request.GET.get('page'),art_count,3,request.path_info)
artli_s=models.Article.objects.filter(blog__site=site)[page_info.start():page_info.end()]
return render(request,'user_home.html',{
'page_info':page_info,
'artli_s':artli_s,
'tags_dit':tags_dit,
'corts_dit':corts_dit,
'times_dit':times_dit,
'fen':fen,
'guanzhu':guanzhu,
})
个人主页(html)
{% extends 'template.html' %}
{% block xs %}
<li><a href="/">主页</a></li>
<li><a href="/">{{ request.session.user.user }}</a></li>
<li><a href="/user_out/">注销</a></li>
<li><img style="width: 48px; height: 48px; border-radius: 50%;" src="{{ request.session.user.avatar }}" alt=""></li>
{% endblock %}
{% block gg %}
{% for i in fen %}
<P>昵称:{{ i.nickname }}</P>
<P>粉丝:{{ i.fans.count }}</P>
<P>关注:{{ guanzhu.count }}</P>
<P>邮箱:{{ i.email }}</P>
{% endfor %}
{% endblock %}
{% block bq %}
{% for tag,tag2 in tags_dit.items %}
<p><a href="/tag/{{ tag }}/{{ request.session.user.user }}/">{{ tag }}({{ tag2 }})</a></p>
{% endfor %}
{% endblock %}
{% block fl %}
{% for tag,tag2 in corts_dit.items %}
<p><a href="/fenlei/{{ tag }}/{{ request.session.user.user }}/">{{ tag }}({{ tag2 }})</a></p>
{% endfor %}
{% endblock %}
{% block sj %}
{% for tag,tag2 in times_dit.items %}
<p><a href="/time/{{ tag }}/{{ request.session.user.user }}/">{{ tag }}({{ tag2 }})</a></p>
{% endfor %}
{% endblock %}
{% block xxs %}
<h3>个人主页</h3>
{% for row in artli_s %}
<h3><a href="">{{ row.title }}</a></h3>
<div class="art-body clearfix">
<img style="float: left" src="{{ row.blog.user.avatar }}" alt="">
<a href="">{{ row.summary }}</a>
</div>
<p><i class="fa fa-user-o" aria-hidden="true"></i>
<a href="">{{ row.blog.user.username }}</a>
发布于
<a href="">{{ row.blog.user.create_time }}</a>
<i class="fa fa-commenting-o" aria-hidden="true"></i>
<a href="">{{ row.read_count }}</a>
<i class="fa fa-thumbs-o-up" aria-hidden="true"></i>
<a href="">{{ row.up_count }}</a>
</p>
<hr style="border:0.5px dotted darkgray"/>
{% endfor %}
{% endblock %}
python Django注册页面显示头像的更多相关文章
- Django实现注册页面_头像上传
Django实现注册页面_头像上传 Django实现注册页面_头像上传 1.urls.py 配置路由 from django.conf.urls import url from django.cont ...
- Django注册页面配置设计
一.上次回顾 Django数据的增查改删 models 中有userInfo 三个字段 user password phonenumber,models.userInfo.objects.all(). ...
- Django admin页面 显示中文问题
http://127.0.0.1:8000/admin/ 该页中实现中文显示. 1. 页面显示的数据表表名 实现中文显示. models.Model类的内部类Meta,有两个特殊的选项:verbos ...
- python&django 实现页面中关联查询小功能(中级篇)
目的 组合搜索实现如下图功能 知识点 1.使用自定义标签模板(templatetags) 实现 models.py 和 views.py和初级篇一样 重点如下:在app01目录下创建templatet ...
- Python - Django - 登录页面
登录页 login.html: <!DOCTYPE html> <html lang="zh-CN"> <head> <meta char ...
- Python django 404页面配置和debug=false 静态文件配置 django版本1.10.5
django设置404页面 1.设置settings文件 DEBUG = False ALLOWED_HOSTS = ['127.0.0.1', 'localhost']或者 ALLOWED_HOST ...
- python&django 实现页面中关联查询小功能(基础篇)
效果 实现效果图如下,根据过滤条件查询相关信息. 知识点 1.配置URL,在路由中使用正则表达式 2.过滤查询 代码 setting.py from django.contrib import adm ...
- Django(四) 后台管理:创建管理员、注册模型类、自定义管理页面显示内容
后台管理 第1步.本地化:设置语言.时区 修改project1/settings.py #LANGUAGE_CODE = 'en-us' LANGUAGE_CODE = 'zh-hans' #设置语言 ...
- 博客(二)注册页面django
首先上一个html <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
随机推荐
- 优化python程序的几点建议
1.在需要只读序列时,最好使用元组而非列表: 2.使用生成器yield,而不是创建大的元组和列表并在其上进行迭代处理: 3.尽量使用python内置的数据结构,而不实现自己的自定义结构: 4.从小字符 ...
- vuex的学习笔记
什么是Vuex? vuex是一个专门为vue.js设计的集中式状态管理架构.状态?我把它理解为在data中的属性需要共享给其他vue组件使用的部分,就叫做状态.简单的说就是data中需要共用的属性. ...
- 部署腾讯云(CentOS6.6版本,jdk1.7+tomcat8+mysql)
这是从一个大神哪里学到的,用来留下来用以记录 http://blog.csdn.net/qingluoII/article/details/76053736 只是其中有一个地方,我在学习的时候觉得可以 ...
- 【Linux】 CentOS7 虚拟机配置
Linux虚拟机配置 从去年开始实习开始,公司电脑换了两个,自己的电脑也换了一个,每换一个新电脑,总免不了要去装一个Linux的虚拟机作为试验用.但是每次新装一个机器总是会遇到各种各样的问题让我用的不 ...
- Algorithm --> 求阶乘末尾0的个数
求阶乘末尾0的个数 (1)给定一个整数N,那么N的阶乘N!末尾有多少个0?比如:N=10,N!=3628800,N!的末尾有2个0. (2)求N!的二进制表示中最低位为1的位置. 第一题 考虑哪些数相 ...
- 获取dmp文件的schema
白天的时候,做了一个获取dmp文件的schema实验,特此记录一下. 参考文章:如何获取dmp文件的schema -- by 我的烟灰缸 http://oradb.cc/2017/07/10/%E5 ...
- Java 线程锁机制 -Synchronized Lock 互斥锁 读写锁
(1)synchronized 是互斥锁: (2)ReentrantLock 顾名思义 :可重入锁 (3)ReadWriteLock :读写锁 读写锁特点: a)多个读者可以同时进行读b)写者必须互斥 ...
- 【Spring系列】Spring mvc整合druid
一.pom.xml中添加druid依赖 <!-- druid --> <dependency> <groupId>com.alibaba</groupId&g ...
- 在CentOS7.1上安装Gitlab碰到的问题及解决方法
一 前言 关于在CentOS7上安装Gitlab, 官方文档已经很详细了,步骤大家按照官方的安装文档一步一步安装即可, 这里就不在累述.官方安装文档地址: https://about.gitlab. ...
- 关于如何学习C语言
2016级计算机专业的C语言分为两个学期,第一学期是C语言(基础),第二学期是C语言(高级),在第一学期主要学习的内容是基本的数据类型,分支结构和循环结构,一维和二维数组,字符数组,函数.通过这学期独 ...