跟大妈学Django Part - 8 (Django入门续集8)

跟大妈学Django Part - 7 (Django入门续集7)

今天继续磕recordemo页面哦。上次就大概的弄了个模板。

开始进入正题之前,又来个小插曲啊😍我们给导航加点东西。先把recordemo的url加上去。然后呢,设定一下,如果已经登录的用户会看到logout的按钮。如果是还没有登录或者没有注册的用户,可以看到login 或者 sign up的按钮。这里用到了if else statement

{% if request.user.is_authenticated %}

{% else %}

{% endif %}

                <!-- add feelings for today -->
                <li class="nav-item">
                    <a class="nav-link" href="{% url 'recordemo' %}" rel="nofollow">
                        RecordEmo
                    </a>
                </li>

                <!-- feelings summary -->
                <li class="nav-item">
                    <a class="nav-link" href="#">
                        EmoBox
                    </a>
                </li>

                {% if request.user.is_authenticated %}
                    <!-- logout -->
                    <li class="nav-item">
                        <a class="nav-link" href="{% url 'account_logout' %}">
                            Logout
                        </a>
                    </li>
                {% else %}
                    <!-- register -->
                    <li class="nav-item">
                        <a class="nav-link" href="{% url 'account_signup' %}">
                            Register
                        </a>
                    </li>

                    <!-- login-->
                    <li class="nav-item">
                        <a class="nav-link" href="{% url 'account_login' %}">
                            Login
                        </a>
                    </li>
                {% endif %}
            </ul>

现在注册,登录的页面还不是很漂亮,这个晚点会做修改。当前显示的还是allauth原有的。

 

 先来写model,需要显示的内容。先定义feeling的种类,然后,时间,还是feeling的细节。

/workspace/how-do-you-do/recordemo/models.py

Model field reference

from django.db import models

# Create your models here.
class AddFeeling(models.Model):

    FEELING_TYPES = [
        ('happy', 'Happy'),
        ('excited', 'Excited'),
        ('calm', 'Calm'),
        ('disppointed', 'Disppointed'),
        ('anxious', 'Anxious'),
        ('angry', 'Angry'),
    ]
    
    date = models.DateField(null=True)
    feelings = models.CharField(
        choices=FEELING_TYPES,
        null=True,
        max_length=15
    )
    details = models.TextField(null=True)

    def __str__(self):
        return self.feelings

admin.py 注册Django显示项目

/workspace/how-do-you-do/recordemo/admin.py

from django.contrib import admin
from .models import AddFeeling

# Register your models here.
class AddFeelingAdmin(admin.ModelAdmin):
    list_display = (
        'date',
        'feelings',
        'details',
    )


admin.site.register(AddFeeling, AddFeelingAdmin)

 效果:

装个summernote,添加点输入乐趣。

pip3 install django-summernote

pip3 freeze --local > requirements.txt

装完了以后,改一下admin和在setting里添加APP,添加decorator 要求用户登录以后才能添加心情。

from django.contrib import admin
from .models import AddFeeling
from django_summernote.admin import SummernoteModelAdmin

# Register your models here.
@admin.register(AddFeeling)
class AddFeelingAdmin(SummernoteModelAdmin):
    
    list_display = (
        'date',
        'feelings',
        'details',
    )

    summernote_fields = ('details')

以上就是建好database了。现在要处理如何把Database里的东西展现给用户。

是用crispy form的时候了。

pip install django-crispy-forms

pip3 freeze > requirements.txt

效果:

 

哈哈,这页面,要吓死人。整形一下。 

 着实难看,但也尽力了。

HTML 

/workspace/how-do-you-do/recordemo/templates/recordemo/recordemo.html

{% extends "base.html" %}
{% load crispy_forms_tags %}
{% load static %}

{% block content %}
<!--Main Navigation-->
<header>

    {% include 'mood/nav.html' %}

    <!-- Background image -->
    <div id="intro" class="p-5 text-center bg-image shadow-1-strong ">
        <div class="mask bg-color ">
            <div class="d-flex justify-content-center align-items-center h-100">
                <div class="px-4 bg-light bg-gradient text-black-50">

                    <div class="my-4"></div>

                    <h4 class="border border-light my-4 p-4">
                        Stuffing Your Feelings in a Box
                    </h4>

                    <form action="" method="POST">
                        {% csrf_token %}
                        {{ form.as_p }}
                    </form>
                    
                    <button 
                        type="button"
                        class="btn btn-outline-muted btn-lg m-2 text-black-50" 
                        href="#" 
                        role="button"
                    >
                        Stuffing
                    </button>
                                    
                    
                    <div class="my-4"></div>
                    
                </div>
            </div>
        </div>
    </div>
    <!-- Background image -->
    
</header>

<hr class="m-0" />

{% include 'mood/footer.html' %}

{% endblock %}

form.py

/workspace/how-do-you-do/recordemo/forms.py

from django import forms
from datetime import datetime

class AddFeelingForm(forms.Form):

    FEELING_TYPES = [
        ('happy', 'Happy'),
        ('excited', 'Excited'),
        ('calm', 'Calm'),
        ('disppointed', 'Disppointed'),
        ('anxious', 'Anxious'),
        ('angry', 'Angry'),
    ]

    date = forms.DateField(
        widget=forms.DateInput(attrs={
            'type': 'date',
            'max': datetime.now().date()
        })
    )
    feelings = forms.ChoiceField(choices=FEELING_TYPES)
    details = forms.CharField(
        widget=forms.Textarea(),
    )

跟大妈学Django - Part 1(Django入门)

跟大妈学Django Part - 2 (Django入门续集2)

跟大妈学Django Part - 3 (Django入门续集3)

跟大妈学Django Part - 4 (Django入门续集4)

跟大妈学Django Part - 5 (Django入门续集5)

跟大妈学Django Part - 6 (Django入门续集6)

跟大妈学Django Part - 7 (Django入门续集7)

跟大妈学Django Part - 8 (Django入门续集8)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CrankyCat

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值