Django之为你的用户添加用户个人日记

前排提示,懒得看的可以先去我博客看看效果噢

我的博客

用户日志的显示

先是创建一个models

#models.py
class Notebook(models.Model):
    user = models.ForeignKey(User,on_delete=models.CASCADE,related_name="notebook")
    #关联用户
    text = models.CharField(max_length=400)
    #内容
    date = models.DateTimeField(auto_now_add=True)
    #创建日期
    felling = models.CharField(max_length=200)
    #心情

    def __str__(self):
        return self.text   

至于为什么不用TextField,因为我懒得改了。。感觉没啥差别,而且日志的话一般不会很多话的。

创建views

#views.py
from .models import Notebook
@login_required(login_url='/accounts/login/')
def notebook(request,user_id):
    user = User.objects.get(id=request.user.id)
    if user.id==user_id:
        notebooks = Notebook.objects.filter(user_id=user_id).order_by("-date")
        context = {'notebooks':notebooks,'user':user}
        return render(request,'article/notebook.html',context)
    else:
        return redirect("article:articles")

这里作了用户限制,非登录用户无法查看,即使登录了,非该日志主人的用户也无法查看该日志。

添加urls

#urls.py
urlpatterns = [
···
path('notebook//',views.notebook,name='notebook'),
···
]

记得将模型添加入admin.py,然后迁移模型,在后台添加几条日记试试看,可以的话,我们开始搞前端。
新建一个notebook.html,加入以下代码:


{% extends "article/base.html"%}
{% load staticfiles %}
{% load humanize %}
{% block title %}个人日记{% endblock %}
{% block css %}



{% endblock %}
{% block content%}
{{ user }}
{{ user.profile.username }}

{{ user.profile.introduce }}




{% for notebook in notebooks %}

{{ notebook.felling }}

{{ notebook }}

{% endfor %}
{% include "article/header.html" %} {% endblock %}

这里我使用到了一个timeline的css,具体来源我找不到了,可以自己网上找找关于时间轴的css,很多,找到自己喜欢的套上去用就可以了,具体效果可以在我网站看。

有了日志的显示了,那么用户怎么自己创建一个日记呢?

添加forms

#forms.py
from .models import Notebook
class NotebookForm(ModelForm):
    class Meta:
        model = Notebook
        fields = ['text','felling']

一如既往修改views

#views.py
from .forms import NotebookForm
@login_required(login_url='/accounts/login/')
def notebook_create(request,user_id):
    user = User.objects.get(id=request.user.id)
    if request.method == 'POST':
        notebook_form = NotebookForm(request.POST)
        if notebook_form.is_valid():
            notebook_form.save(commit=False).user = user
            notebook_form.save()
            return redirect("article:notebook",user_id=user_id)
        else:
            return HttpResponse("内容有误,请重新填写!!")
    else:
        notebook_form = NotebookForm()
        context = {'form':notebook_form}
        return render(request,'article/notebook_create.html',context)

添加urls

#urls.py
urlpatterns = [
···
path('notebook-create//',views.notebook_create,name='notebook_create'),
···
]

接下来就是html了

新建一个notebook_create.html


{% extends "article/base.html"%}
{% load staticfiles %}
{% load humanize %}
{% block title %}创造你的日常{% endblock %}
{% block content%}
{% csrf_token %}
一次性创作,想好再写
{% include "article/header.html" %} {% endblock %}

模板写好了,那么我们还需要再修改一下notebook.html,给我们的create添加一个入口,


···
{{ user.profile.username }}——创作你的日记
···

最后

记得给你的导航添加notebook的入口,记得是传入user.id作为参数。

erJuNT.png

看看效果把,至于其他修改,删除的功能就自己完善吧,我觉得作为一个日志的话最好就不要删除修改了,让未来的自己看见傻逼的现在也是一件美好的事情。

你可能感兴趣的:(Django之为你的用户添加用户个人日记)