Maison > Questions et réponses > le corps du texte
用户访问index的时候,需要生成一个静态文件,比如index.html
强调一下,我要生成的是静态文件!不要建议我用缓存或是其他什么的,我就是要生成一个静态网站!!!
views.py
是这样的:
class IndexView(BaseMixin, ListView):
template_name = 'index.html'
context_object_name = 'article_list'
paginate_by = settings.PAGE_NUM # 分页--每页的数目
def get_queryset(self):
article_list = Article.objects.filter(status=0)
return article_list
def get_context_data(self, **kwargs):
# 轮播
kwargs['carousel_page_list'] = Carousel.objects.all()
kwargs['home']= True
return super(IndexView, self).get_context_data(**kwargs)
用户访问index,打开指定路径的文件,然后写入渲染出来的模板的代码
比如这样,在视图中加这样一段代码:
class IndexView(BaseMixin, ListView):
......
with open("index.html", 'w') as static_file:
static_file.write("123")
......
这样是可以的,访问首页的时候,会在根目录生成一个index.html
的文件,但是不知道怎么渲染模板和变量!!!,还有我用的是jinjia2
实在不行,就用下策,自己写个url的构造器,把django的所有链接给构造出来!
然后自己写个爬虫去爬自己的网站.
但是这样真的很低效!!
感觉应该会有现成的模块来解决这个问题!
比如dedecms,zblog等都支持静态文件生成.
针对不支持动态的空间,生成静态页面我感觉还是很有必要的!
目标是生成一个静态网站!!!
目标是生成一个静态网站!!!
目标是生成一个静态网站!!!
巴扎黑2017-04-18 09:08:00
Hahahahaha, utiliser un robot pour explorer mon propre site Web est la même chose que lorsque je l'ai utilisé = =, vous pouvez l'imaginer.
Habituellement, la première chose qui me vient à l'esprit est l'interaction ajax, mais ajax semble être dynamique ? D'accord (∩_∩), je pense que oui, je ne sais pas si c'est vrai :
Si chaque index a un style relativement standardisé, alors assemblez-le simplement comme vous l'avez dit. Vous pouvez utiliser des scripts shell ou certaines bibliothèques python. Quoi qu'il en soit, il suffit de pouvoir faire fonctionner des fichiers, tant que les fichiers sont là. et Les variables et ainsi de suite ont été remplacées, mais il y a un problème de rendu Vous pouvez ajouter un temps d'attente de thread pour déclencher quelque chose
Mais vous n'êtes pas obligé de faire cela. En fait, ne serait-il pas préférable de simplement le restituer directement, puis de le convertir en une page Web purement statique, puis de l'afficher ? Je ne l'ai pas essayé, mais lorsque j'apprenais Unittest et Selenium, je suis tombé sur les résultats de sortie des pages Web de test de Django, et je me suis souvenu de nombreuses fonctions intégrées qui les convertissent en HTML pur, et elles peuvent également restituer des variables. Au contraire, si vous ajoutez un jeton pour le protéger, il risque de ne pas être transféré, mais c'est en réalité très gênant si vous l'assemblez avec la première idée.
高洛峰2017-04-18 09:08:00
Si vous souhaitez simplement générer une page statique, vous pouvez le faire
Mais il y a beaucoup de choses à considérer dans un site Web statique. Prenons l'exemple de la pagination, vous devez générer une page statique pour chaque page de données.
template_name = 'index.html'
vm = {
'key': 'value'
}
html = render(request, template_name, vm).content
with open('index.html', 'w') as f:
f.write(html)