首页>>后端>>Python->django怎么按日期归类文章(django日期比较)

django怎么按日期归类文章(django日期比较)

时间:2023-12-11 本站 点击:0

导读:今天首席CTO笔记来给各位分享关于django怎么按日期归类文章的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

如何用Django和mysql自动分天建表

提供个思路。没试过,不知道是否可行。把表的抽象结构定义出一个Model,但记得加上

class Meta:

abstract=True

好了,你得到了一个模型的抽象类。抽象类在syncdb时候不会被建成表。

然后,写一个按照日期动态生成类的东东。比如你的抽象类叫MyModel的话。

def gen_model_by_date(dt=None):

if dt is None:

dt = datetime.datetime.today()

new_model_name = 'MyModel_{d}'.format(d=dt.strftime('%Y%m%d'))

new_model = type(new_model_name, (MyModel, ), {})

return new_model

然后这张表的所有逻辑里,都用这个方法来代替原model。

django代码相关应该也许这么就搞得定吧。 至于表……写SQL每天定时建表,建表以保证不会出现要用的表还没建好的情况就行了。

Django中怎么使用日期函数

SELECT MAX(id) FROM django;

Django是用Python写的,你直接用Python的日期函数就好了SELECT MAX(id) FROM django;

Django是用Python写的,你直接用Python的日期函数就好了

django 日志文件如何按时间日期切割,原生不支持吗

django 日志文件如何按时间日期切割

linux下处理tomcat日志切割与删除操作:

System.out和System.err都被打印到catalina.out。catalina.out不会rotate。一般在部署tomcat后,运行久了,catalina.out文件会越来越大,对系统的稳定造成了一定的影响。

1、可通过修改conf/logging.properties日志配置文件来屏蔽掉这部分的日志信息。

将level级别设置成WARNING就可以大量减少日志的输出,当然也可以设置成OFF,直接禁用掉。

一般日志的级别有:

2、使用cronolog工具切分Tomcat的catalina.out日志文件,下载、安装cronolog。

用which cronolog可以查到安装的路径,这个路径待会在修改catalina.sh时会用到。

修改catalina.sh 将183行修改成184行内容,注释掉355行,368、369行替换成370、371行,379、380行替换成381、382行。

这样在/usr/local/tomcat/logs每天会自动生成catalina.%Y-%m-%d.out文件,下面要做的是定期清理这些过期的文件,可以通过crontab来实现。

django简单吗?

django这个模块其实简单的,难点在于,开发一个web,需要集合前端(css、HTML、JavaScript)和后端(数据库)的知识点,如果你学习Django就是所谓的全端开发了,难度是有的,那些说不难的,都是从其他地方转过来的

Django中对于上传的文件的保存方法(时间+文件名)

        这是在windows环境下,且要加入上传时间,与本来的文件名拼在一起,形成一个整个的文件名,所以,其必须将文件名放在最后,而将时间放在前面,避免与后缀名冲突,除此之外,还要使用time.time()方法,取得时间戳(格式化时间会与windows系统产生冲突),并且最好进行取整,然后再将其转化为字符串与文件名拼起来组成新的文件名,从而进行保存。实例如下:

如何正确使用 CBVs

Class-based views是Django为解决建站过程中的常见的呈现模式而建立的. 在这节中, 我们着重讲一下CBVs的使用技巧和一般原则.

1. CBVs的使用原则

代码越少越好

永远不要重复代码

View应当只包含呈现逻辑, 不应包括业务逻辑

保持view逻辑清晰简单

不要将CBVs用作403, 404, 500的错误处理程序

保持mixin简单明了

2. 如何使用mixin

在编程中mixin是指为继承它的class提供额外的功能, 但它自身却不能单独使用的类. 在具有多继承能力的编程语言中, mixin可以为类增加额外功能或方法. 在Django中, 我们可以使用mixin为CBVs提供更多的扩展性, 当然在类继承过程中, 我们推荐以下原则:

Django自身提供的View永远在最右边

mixin依次在以上view的左边

mixin永远继承自Python的object类型

在这里顺便推荐一个很好的django库: django-braces. 该库中提供众多django的mixin, 可以方便我们日常使用.

以下是一个简单地例子, TemplateView是django自身提供的基本View, 因此在最右边; FreshFruitMixin则在TemplateView左边; FreshFruitmixin继承自object:

from django.views.generic import TemplateView

class FreshFruitMixin(object):

def get_context_data(self, **kwargs):

context = super(FreshFruitMixin, self).get_context_data(**kwargs)

context["has_fresh_fruit"] = True

return context

class FruitFlavorView(FreshFruitMixin, TemplateView):

template_name = "fruit_flavor.html"

3. 如何使用Django自身的CBV

CBVs在功能上的可扩展性, 牺牲的是简单性, 一个CBV最多的时候拥有8个import关系. (如果希望进一步了解这些继承关系, 可以使用Classy Class-Based Views进行查看.) 所以要弄懂那个View最适合当下的场景对于开发人员也是一个挑战. 为了减少CBVs的使用难度, 我们将这些View和基本的用法列在下表中, 为了显示方便, 名字前的django.views.generic前缀皆省去:

名字目的例子

View基本View, 可以在任何时候使用见后面详细介绍

RedirectView重新定向到其他URL将访问"/log-in/"的用户重新定向到"/login/"

TemplateView显示Django HTML template一般网站中使用模板显示的页

ListView显示对象列表文章列表页

DetailView显示对象详情文章详细页

FormView提交From网站联系我们或emai订阅form

CreateView创建对象创建新文章页

UpdateView更新对象修改文章页

DeleteView删除对象删除文章页

Generic date views显示一段时间内的对象按时间归类的博客

4. CBVs的使用技巧

a. 限定访问权限

在django tutorial中介绍了如何一起使用django.contrib.auth.decorators.login_required和CBV, 这是一个典型的错误例子.

还好, 我们有django-braces. 在django-braces中已经提供了一个LoginRequiredMixin:

# myapp/views.py

from django.views.generic import DetailView

from braces.views import LoginRequiredMixin

from .models import Article

class ArticleDetailView(LoginRequiredMixin, DetailView):

model = Article

b. 在form提交成功后执行代码

当需要在form提交成功后执行自定义的代码时, 可以使用form_valid()方法, form_valid()方法返回的是django.http.HttpResponseRedirect:

# myapp/views.py

from django.views.generic import CreateView

from braces.views import LoginRequiredMixin

from .models import Article

class ArticleCreateView(LoginRequiredMixin, CreateView):

model = Article

fields = ('title', 'slug', 'content')

def form_valid(self, form):

# 自定义的代码逻辑写在这里

return super(ArticleCreateView, self).form_valid(form)

c. 在form提交不成功后执行代码

当需要在form提交不成功后执行自定义的代码时, 可以使用form_invalid()方法, form_invalid()方法返回的也是django.http.HttpResponseRedirect:

# myapp/views.py

from django.views.generic import CreateView

from braces.views import LoginRequiredMixin

from .models import Article

class ArticleCreateView(LoginRequiredMixin, CreateView):

model = Article

def form_invalid(self, form):

# 自定义的代码逻辑写在这里

return super(ArticleCreateView, self).form_invalid(form)

5. CBV和form如何结合使用

下面我们介绍一下常见的django form和CBV结合使用的模式, 首先我们定义一个Article model方便举例:

# myapp/models.py

from django.db import models

from django.core.urlresolvers import reverse

STATUS = {

(0, 'zero'),

(1, 'one'),

}

class Article(models.Model):

title = model.CharField(max_length=255)

slug = model.SlugField()

review_num = models.IntegerField(default=0, choices=STATUS)

def get_absolute_url(self):

return reverse("article_detail", kwargs={"slug": self.slug})

a. Views和ModelForm

下面的例子中, 我们利用django.contrib.messages和CBVs构建一套创建, 更新和显示一篇article的view, 包括:

ArticleCreateView: 用于创建新article

ArticleUpdateView: 用于更新article

ArticleDetailView: 用于确认创建或更新后的article

# myapp/views.py

from django.contrib import messages

from django.views.generic import CreateView, UpdateView, DetailView

from braces.views import LoginRequiredMixin

from .models import Article

class ArticleActionMixin(object):

@property

def success_msg(self):

return NotImplemented

def form_valid(self, form):

messages.info(self.request, self.success_msg)

return super(ArticleActionMixin, self).form_valid(form)

class ArticleCreateView(LoginRequiredMixin, ArticleActionMixin, CreateView):

model = Article

fields = ('title', 'slug', 'review_num')

success_msg = "Article Created!"

class ArticleUpdateView(LoginRequiredMixin, ArticleActionMixin, UpdateView):

model = Article

fields = ('title', 'slug', 'review_num')

success_msg = "Article Updated!"

class ArticleDetailView(DetailView):

model = Article

接下来是template

{# templates/myapp/article_detail.html #}

{% if messages %}

ul class="messages"

{% for message in messages %}

li{ message } /li

/ul

{% endif %}

b. Views和Form

下面我们以搜索article功能为例子, 介绍一下CBV和form的常见使用样式, 在article列表页中点击搜索按钮, 显示搜友符合条件的article列表:

# myapp/views.py

from django.views.generic import ListView

from .models import Article

class ArticleListView(ListView):

model = Article

def get_queryset(self):

queryset = super(ArticleListView, self).get_queryset()

q = self.request.GET.get('q')

if q:

return queryset.filter(title__icontains=q)

return queryset

然后可以使用include以下tenplate呈现搜索form:

{# templates/myapp/_article_search.html #}

form action="{% url "article_list" %} method="GET""

input type="text" name="q"/

button type="submit"搜索/

/form

6. 单独使用View

只用django.views.generic.View, 而不用FBV来构建所有django项目中的view也是可行的, 这也没有你所想象的那么复杂. 使用View的好处是, 我们不需要写许多内套式的if语句, 我们可以直接覆盖使用View的get(), post()等方法:

from django.shortcuts import get_object_or_404, render, redirect

from django.views.generic import View

from braces.views import LoginRequiredMixin

from .forms import ArticleForm

from .models import Article

class ArticleView(LoginRequiredMixin, View):

def get(self, request, *args, **kwargs):

article = get_object_or_404(Article, pl=kwargs['slug'])

return render(request,

"myapp/article_detail.html",

{"article": article}

)

def post(sele, request, *args, **kwargs):

article = get_object_or_404(Article, pl=kwargs['slug'])

form = ArticleForm(request.POST)

if form.is_valid():

form.save()

return redirect("myapp:article", article.slug)

结语:以上就是首席CTO笔记为大家整理的关于django怎么按日期归类文章的相关内容解答汇总了,希望对您有所帮助!如果解决了您的问题欢迎分享给更多关注此问题的朋友喔~


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/Python/25163.html