老师我的消息通知文字没有出来效果
来源:7-3 新闻详情:实现新闻列表与新闻详情
Buck_messic
2020-08-29 01:32:21
from django.db import models
# Create your models here.
from utils import contans
class Slider(models.Model):
"""系统轮播图"""
name = models.CharField("名称",max_length=32)
desc = models.CharField("描述",max_length=100,null=True,blank=True)
types =models.SmallIntegerField("展示位置",
choices=contans.SLIDER_TYPES_CHOICES,
default=contans.SLIDER_TYPES_INDEX)
img = models.ImageField("图片",upload_to="slider")
reorder = models.SmallIntegerField("排序",default=0,help_text="数字越大,越靠前")
start_time = models.DateTimeField("生效开始时间",null=True,blank=True)
end_time = models.DateTimeField("生效结束时间",null=True,blank=True)
target_url = models.CharField("跳转地址",max_length=256,null=True,blank=True)
is_valid = models.BooleanField("是否删除",default=True)
created_at = models.DateTimeField("创建时间",auto_now_add=True)
update_at = models.DateTimeField("最后修改时间",auto_now=True)
class Meta:
db_table = "ststem_slider"
ordering = ['-reorder']
class News(models.Model):
"""新闻及通知"""
types = models.SmallIntegerField("类型",choices=contans.NEWS_TYPES_CHOICES,default=contans.NEWS_TYPE_NEW)
title = models.CharField("标题",max_length=255)
content = models.TextField("内容")
reorder = models.SmallIntegerField("排序", default=0, help_text="数字越大,越靠前")
start_time = models.DateTimeField("生效开始时间", null=True, blank=True)
end_time = models.DateTimeField("生效结束时间", null=True, blank=True)
view_count = models.IntegerField("浏览次数",default=0)
is_top = models.BooleanField("是否置顶",default=False)
is_valid = models.BooleanField("是否删除", default=True)
created_at = models.DateTimeField("创建时间", auto_now_add=True)
update_at = models.DateTimeField("最后修改时间", auto_now=True)
class Meta:
db_table = "system_news"
ordering = ["-reorder"]
from django.db.models import F
from django.shortcuts import render, get_object_or_404
from system.models import News
# Create your views here.
from utils import contans
def news_list(request,template_name='news_list.html'):
"""新闻列表"""
news = News.objects.filter(types=contans.NEWS_TYPE_NEW,
is_valid=True)
return render(request,template_name,{
'news':news
})
def news_detail(request,template_name='news_info.html'):
"""新闻详情"""
news_obj = get_object_or_404(News,pk=pk,is_valid=True)
#每查看一次,浏览次数+1
news_obj.view_count = F('view_count') + 1
news_obj.save()
#重新从数据库中取数据
news_obj.refresh_from_db()
return render(request,template_name,{
'news_obj':news_obj
})
from django.conf.urls import url, include
from system import views
urlpatterns = [
#新闻列表
url(r"news/$",views.news_list,name='news_list'),
# 新闻详情
url(r"news/(?P<pk>\d+)$",views.news_detail,name='news_detail')
]
news_info.html:
{% extends 'base.html' %}
{% block title %}
<title>新闻详情</title>
{% endblock %}
{% block container %}
<!--主体-->
<header class="wy-header">
<div class="wy-header-icon-back"><span></span></div>
<div class="wy-header-title">新闻详情</div>
</header>
<div class="weui-content">
<article class="weui-article">
<h1>{{ new_obj.title }}</h1>
<h3 class="wy-news-time">{{new_obj.created_at|date }}浏览次数:{{ new_obj.view_count }}</h3>
<section class="wy-news-info">
<p>
{{ new_obj.content|safe }}
</p>
<p>
<img src="upload/ban1.jpg" alt="" />
<img src="upload/ban2.jpg" alt="" />
</p>
</section>
</article>
</div>
{% endblock %}
news_list.html:
{% extends 'base.html' %}
{% block title %}
<title>新闻列表</title>
{% endblock %}
{% block container %}
<!--主体-->
<header class="wy-header">
<div class="wy-header-icon-back"><span></span></div>
<div class="wy-header-title">新闻列表</div>
</header>
<div class="weui-content">
<div class="weui-cells wy-news-list">
{% for item in news_list %}
<a class="weui-cell weui-cell_access"
href="{% url 'system:news_detail' item.pk %}">
<div class="weui-cell__bd">
<p>{{item.title }}</p>
</div>
<div class="weui-cell__ft"></div>
</a>
{% endfor %}
</div>
</div>
{% endblock %}
{% block footer %}
<script type="text/javascript" src="js/jquery.Spinner.js"></script>
{% endblock %}
2回答
好帮手慕燕燕
2020-08-29
同学你好,index方法中,渲染视图的代码,'news_list'引号内不能有空格
加油,同学,祝学习愉快~~~
好帮手慕燕燕
2020-08-29
同学你好,同学的问题是说精选推荐上方的新闻没有显示文字标题吗
确定MySQL对应的表中是否有新闻数据
在首页视图函数index方法中,检查news_list语句的写法,是否能取到数据库中的数据,打印输出一下是否取值成功
加油,祝学习愉快~~~