Я использую Django 1.2.1 для моего личного сайта с блогом. Это все хорошо, но я обнаружил, что все браузеры, которые я пробовал (Firefox, Chromium, Opera), кешируют веб-страницы, что, конечно, является проблемой для других пользователей, просматривающих мой блог (так как он не загружается) новые сообщения, если они не очищают свой кэш или не обновляют страницу). У меня не было этой проблемы, когда мой сайт работал на PHP, так как мне решить эту, казалось бы, проблему, связанную с Django?
Я работаю с Джанго всего около недели или около того, так что я не знаю, где примерно я должен искать, чтобы исправить что-то подобное. Заранее спасибо!
То, как я делаю каждую страницу (и каждое сообщение в блоге), - соответственно объект Page / Post, поэтому я могу использовать интерфейс администратора без необходимости писать свой собственный. Хотя проблема возникает в обеих ситуациях, я просто покажу класс Post:
class Post(models.Model):
author = models.ForeignKey(User, default=User.objects.get(username='nathan'))
status = models.ForeignKey(Status, default=Status.objects.get(text='Draft'))
date = models.DateTimeField(default=datetime.datetime.now())
title = models.CharField(max_length=100)
post = models.TextField()
categories = models.ManyToManyField(Category)
def __unicode__(self):
return u'%s' % self.title
def link(self):
return u'/blog/post/%s' % self.title
class Meta:
ordering = ['-date']
А вот и мой urls.py:
from django.conf.urls.defaults import *
from django.views.generic import list_detail
from feeds import PostFeed
from models import Post
blog_posts = {
'queryset': Post.objects.filter(status__text__exact='Published'),
}
urlpatterns = patterns('getoffmalawn.blog.views',
(r'^$', list_detail.object_list, blog_posts),
(r'^archive/(\d{4})$', 'archive'),
(r'^rss/$', PostFeed()),
(r'^search/$', 'search'),
(r'^tag/(.+)/$', 'tag'),
(r'^post/(.+)/$', 'post'),
)
Если вы, ребята, хотели бы увидеть код из views.py, просто спросите, и я его тоже скину.
Редактировать:
Вот взгляды.
view.py для блога Приложение:
from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import render_to_response, redirect
from django.core.context_processors import csrf
from django.db.models import Q
from models import Post, Category
def post(request, title):
post = Post.objects.get(title=title)
c = locals()
c.update(csrf(request))
return render_to_response('blog/post_detail.html', c)
def blog_detail(request, blog_id):
post = get_object_or_404(Post, pk=blog_id)
return list_detail.object_detail(request, queryset=Post.objects.all(), object_id=blog_id)
def archive(request, month, year):
pass
def search(request):
if request.method == 'GET':
query = request.GET['q']
object_list = Post.objects.filter(Q(post__icontains=query) | Q(title__icontains=query), status__text__exact='Published')
return render_to_response('blog/post_list_sparse.html', locals())
def tag(request, tag):
object_list = Post.objects.filter(categories__text__exact=tag, status__text__exact='Published')
return render_to_response('blog/post_list.html', locals())