用Get方法实现文章分类功能

开发顺序(TMVUT)

Model层需要多少数据字段?
View层根据什么请求,返回什么结果?
Template层如何与用户交互?

M

from django.db import models

# Create your models here.
class People(models.Model):
    name = models.CharField(null=True, blank=True,max_length=200)
    job = models.CharField(null=True, blank=True, max_length=200)
    def __str__(self):
        return self.name

class Aritcle(models.Model):#新增
    headline = models.CharField(null=True, blank=True,max_length=500)#新增
    content = models.TextField(null=True, blank=True)#新增
    TAG_CHOICES = (
        ('tech', 'Tech'),
        ('life','Life'),
    )
    tag = models.CharField(null=True, blank=True, max_length=5, choices=TAG_CHOICES)
    def __str__(self):
        return self.headline
C:\Users\Administrator\Desktop\standardweb\firstsite>python manage.py makemigrations
Migrations for 'firstapp':
  firstapp\migrations\0003_aritcle_tag.py
    - Add field tag to aritcle

C:\Users\Administrator\Desktop\standardweb\firstsite>python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, firstapp, sessions
Running migrations:
  Applying firstapp.0003_aritcle_tag... OK

C:\Users\Administrator\Desktop\standardweb\firstsite>python manage.py runserver
Performing system checks...

V

from django.shortcuts import render, HttpResponse
from firstapp.models import People, Aritcle
from django.template import Context, Template

# Create your views here.
def index(request):
    print(request)
    print('==='*30)
    print(dir(request))
    print('==='*30)
    print(type(request))
    queryset = request.GET.get('tag')
    if queryset:
        article_list = Aritcle.objects.filter(tag=queryset)
    else:
        article_list = Aritcle.objects.all()#变量article_list储存Article所有的文章
    context = {}#新建字典
    context['article_list'] = article_list #字典context中的article_list键(html中通过检索键提取文章内容)对应article_list变量的值
    index_page = render(request, 'first_web_2.html', context)
    return index_page

T

{% load staticfiles %}
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>first web</title>
        <link rel="stylesheet" href="{% static 'css/semantic.css' %}"  media="screen" title="no title" charset="utf-8">
        <link href="https://fonts.googleapis.com/css?family=Oswald|Raleway" rel="stylesheet">


        <style type="text/css">
            h1 {
                font-family:'Oswald', sans-serif!important;
                font-size:40px;
            }

            body {
                font-family: 'Raleway', sans-serif;
            }
            p {
                font-family: 'Raleway', sans-serif;
                font-size:18px;
            }
            .ui.vertical.segment.masthead {
                height: 300px;
                background-image: url({% static 'images/star_banner.jpg' %});
                background-size: cover;
                background-position: 100% 80%;
            }

            .ui.container.segment {
                width: 800px;
            }

            .ui.center.aligned.header.blogslogon {
                margin-top: 40px;
            }

            .ui.center.aligned.header.blogslogon p {
                margin-top: 10px;
                color: white;
                font-size: 10px;
            }
            .ui.container.nav {
                width: 500px;
            }

        </style>
    </head>
    <body>
        <div class="ui inverted vertical  segment masthead">

            <h1 class="ui center aligned header blogslogon" style="font-size:50px;font-family: 'Raleway', sans-serif!important;">
                Bloger
                <p class="ui sub header">
                    everyone has a story to tell
                </p>

            </h1>
        </div>
        <div class="ui container nav">
            <div class="ui borderless text three item menu ">
                <div class="ui simple dropdown  item">
                    Categories
                    <i class="dropdown icon"></i>
                    <div class="menu">
                        <a class="item" href="?tag=life">life</a>
                        <a class="item" href="?tag=tech">tech</a>
                    </div>
                </div>
                <a class="item">
                    Popular
                </a>
                <a class="item">
                    About
                </a>

            </div>
        </div>

        <div class="ui divider"></div>

        <div class="ui  vertical segment">
            {% for article in article_list %}
                <div class="ui container vertical segment">
                    <a href="#">
                        <h1 class="ui header">
                            {{ article.headline }}
                        </h1>
                    </a>

                    <i class="icon grey small unhide">10,000</i>
                    <p>
                        {{ article.content|truncatewords:100 }}
                        <a href="#">
                            <i class="angle tiny double grey right icon">READMORE</i>
                        </a>
                    </p>

                    <div class="ui mini  tag label">
                        {{ article.tag }}
                    </div>
                </div>
            {% endfor %}


        </div>

        <div class="ui inverted  vertical very padded  segment">
            Mugglecoding®
        </div>
    </body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值