实现用户注册与登录、登出(二)

该博客介绍了如何在后台添加用户资料模型,并在前端页面设置用户判断条件,以实现在列表页面显示登录用户的头像。

扩展资料后的用户判断

在后台添加用户资料的模型,在前端页面添加用户判断的条件

M

从models中引入User建立UserProfile模型(用户资料模型)

from django.db import models
from faker import  Factory
from django.contrib.auth.models import User

# Create your models here.
class Video(models.Model):
    title = models.CharField(null=True, blank=True, max_length=300)
    content = models.TextField(null=True, blank=True)
    url_image = models.URLField(null=True, blank=True)
    cover = models.FileField(upload_to='cover_image', null=True)
    editors_choice = models.BooleanField(default=False)

    def __str__(self):
        return self.title

class UserProfile(models.Model):
    belong_to = models.OneToOneField(to=User, related_name='profile')
    profile_image = models.FileField(upload_to='profile_image')

# f = open('/Users/Hou/Desktop/web_url.txt','r')
# for url in f.readlines():
#     v = Video(
#         title=fake.text(max_nb_chars=90),
#         content=fake.text(max_nb_chars=3000),
#         url_image=url,
#         editors_choice=fake.pybool()
#     )
#     v.save()

admin.py

在admin.py中注册模型

from django.contrib import admin
from website.models import Video, UserProfile

# Register your models here.
admin.site.register(Video)
admin.site.register(UserProfile)

MM

T

列表页面通过判断显示正在登录的用户头像

<div class="item">
                    <h5 class="ui inverted header">
                        <span style="margin-right:20px;">{{ request.user.username }}</span>
                        <div class="ui mini circular image">
                            {% if request.user.profile.profile_image %}
                                <img src="/upload/{{ request.user.profile.profile_image }}" alt="" />
                            {% else %}
                                <img src="http://semantic-ui.com/images/avatar/small/matt.jpg" alt="" />
                            {% endif %}
                        </div>
                    </h5>
                </div>
{% load staticfiles %}

<!DOCTYPE html>
<html>

<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <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/list_custom.css' %}" media="screen" title="no title" charset="utf-8">

</head>

<body>
    <div class="ui inverted top fixed menu borderless red menu">
        <div class="header item">
            <div class="ui image">
                <img src="{% static 'images/tenlogo.png' %}" alt="">
            </div>
        </div>

        <div class="right menu">
            {% if request.user.is_authenticated %}
                <div class="item">
                    <h5 class="ui inverted header">
                        <span style="margin-right:20px;">{{ request.user.username }}</span>
                        <div class="ui mini circular image">
                            {% if request.user.profile.profile_image %}
                                <img src="/upload/{{ request.user.profile.profile_image }}" alt="" />
                            {% else %}
                                <img src="http://semantic-ui.com/images/avatar/small/matt.jpg" alt="" />
                            {% endif %}
                        </div>
                    </h5>
                </div>
                <div class="item">
                    <a href="#" class="ui inverted circular button">Logout</a>
                </div>
            {% else %}
                <div class="item">
                    <h5 class="ui inverted header">
                    <span style="margin-right:20px">{{ request.user.username }}</span>
                    <div class="ui mini circular image">
                        <img src="http://semantic-ui.com/images/avatar/small/matt.jpg" alt="" />
                    </div>
                </h5>
                </div>
                <div class="item">
                    <a href="#" class="ui inverted circular button">Signup/Login</a>
                </div>
            {% endif %}
        </div>
    </div>
    <div class="ui inverted segment container nav">
        <div class="ui  three borderless  item  menu">
            <a class="item" >
                All
            </a>
            <a class="item">
                New
            </a>
            {% if 'editors' in request.path %}
                <a class="active item" href="{% url 'list' %}editors">
                Editor's
            </a>
            {% else %}
                <a class="item" href="{% url 'list' %}editors">
                Editor's
            </a>
            {% endif %}
        </div>
    </div>


    <div class="ui basic segment container content">

        <div class="ui three column grid">
            {% for article in vids_list %}
            <div class="column">
                <a class="ui fluid card" href="{% url 'list' %}">
                    <div class="image">
                        {% if article.cover %}
                            <img src="/upload/{{ article.cover }}" alt="" style="height:200px;object-fit: cover;">
                        {% else %}
                            <img src="{{ article.url_image }}" alt="" style="height:200px;object-fit: cover;">
                        {% endif %}
                    </div>
                </a>

                <div class="title header" href="{% url 'list' %}">{{ article.title }}</div>

                <i class="icon grey unhide"></i>
                <span style="color:#bbbbbb">{{ article.views }}</span>

                <span class="" style="color:rgb(226, 226, 226)">|</span>

                <i class="icon grey checkmark"></i>
                <span style="color:#bbbbbb"> {{ article.favs }} people got it</span>

            </div>
            {% endfor %}
        </div>
    </div>

    <div class="ui center aligned very padded vertical segment container">
        <div class="ui pagination menu">
            {% if vids_list.has_previous %}
                <a href="?page={{ vids_list.previous_page_number }}" class="item">
                    <i class="icon red left arrow"></i>
                </a>
            {% else %}
                <a href="?page={{ vids_list.start_index }}" class="disabled item">
                    <i class="icon left arrow"></i>
                </a>
            {% endif %}

            {% if vids_list.has_next %}
                <a href="?page={{ vids_list.next_page_number }}" class="item">
                    <i class="icon red right arrow"></i>
                </a>
            {% else %}
                <a href="?page={{ vids_list.end_index }}" class="disabled item">
                    <i class="icon right arrow"></i>
                </a>
            {% endif %}

        </div>
    </div>
</body>

</html>
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值