不死孤狼
IT 从来都是一个有新技术驱动的行业

python Django注册页面显示头像(views)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
============================================================================html=========================================================================<br><!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)

1
2
3
4
5
6
7
8
9
10
11
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)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{% extends 'template.html' %}
{% block ys %}
{% endblock %}
 
{% block xxs %}
    <h3>标签文章</h3>
    {% for 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)

1
2
3
4
5
6
7
8
9
10
11
12
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)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
{% extends 'template.html' %}
{% block ys %}
{% endblock %}
{% block xxs %}
    <h3>分类文章</h3>
    {% for row in fenle_list %}
        {% for 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)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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 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 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 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)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
{% 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 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 %}
posted on 2018-03-15 12:47  不死孤狼  阅读(474)  评论(0)    收藏  举报