用户访问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等都支持静态文件生成.
针对不支持动态的空间,生成静态页面我感觉还是很有必要的!
目标是生成一个静态网站!!!
目标是生成一个静态网站!!!
目标是生成一个静态网站!!!
哈哈哈哈哈,用爬蟲爬自己的網站和我當初一個樣= =,虧你想得出。
一般第一時間就是想到ajax交互,不過ajax好像是屬於動態?好吧(∩_∩),我這麼想的,不知對不對:
每個index假如都有比較規範的樣式,那就如你所言組裝起來就好了,用shell腳本可以,python的一些庫也行,反正能操作文件就行了,只要文件在,並且變量等都替換好,渲染就問題了?你可以加個線程等待時間,觸發什麼的
不過你可以不用這樣,其實你直接渲染好再轉成純靜態網頁再輸出不就好了嗎?我沒試過,但我學unittest配合selenium時接觸到django檢驗網頁輸出結果就記得好些轉成純html的內建函數,而且還能渲染變數的。反轉是加個token保護可能會轉不出來,但你要是第一個思路組裝其實非常麻煩。
如果你只是為了產生靜態頁,可以這樣
但是靜態站要考慮的東西比較多,就拿分頁來說,你要把每頁資料都產生靜態頁面