前排提示,懒得看的可以先去我博客看看效果噢
我的博客
用户日志的显示
先是创建一个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%}
{% include "article/header.html" %}
{% endblock %}
模板写好了,那么我们还需要再修改一下notebook.html,给我们的create添加一个入口,
···
{{ user.profile.username }}——创作你的日记
···
最后
记得给你的导航添加notebook的入口,记得是传入user.id作为参数。
erJuNT.png
看看效果把,至于其他修改,删除的功能就自己完善吧,我觉得作为一个日志的话最好就不要删除修改了,让未来的自己看见傻逼的现在也是一件美好的事情。