[英]Django deployment with required temporary model data
首先,我對部署很陌生。 我在我的 Windows 機器上使用 Django 構建了一個新的報紙項目。 它在本地主機上運行良好。 現在我想將它部署在pythonanywhere 中。
我使用默認的 db.sqlite3 作為我的數據庫。 但在生產中,我將使用 MySql,(他們有簡單的設置和支持)
問題:作為報紙,我的網站需要很多專門的過濾。 為了找到一個單一的值,我有時不得不對過濾的數據使用列表索引,比如(在獲取上下文數據中):
context['main_lead_news']=SingleNews.objects.filter(
published_date__lte=timezone.now(),
news_extras__icontains='main_lead_news').order_by('-published_date')[0]
如您所見,如果 'filter' 未找到任何內容,它將引發錯誤,因為列表索引超出范圍。 總的來說,我的代碼將在沒有任何臨時模型數據的情況下中斷(目前,盡管其中大多數是 lorem ipsum。)我在代碼完成之前填充了它們。 現在,我該如何部署我的項目,因為由於這些錯誤,我可能沒有機會再次在線填充它們。我的調試也是錯誤的,幾乎不可能在不發現錯誤的情況下運行我的代碼!
我有兩個(一半!)想法-
1.在部署時以某種方式上傳sqlite3數據庫,然后在配置好MySQL后,將數據從sqlite3動態傳輸到MySQL(我也不知道怎么做。)
2.將'model'中除創建視圖外的所有視圖和URL以及absolute_urls注釋掉然后部署它。 通過該視圖填充數據庫后,我將刪除 Github 中的提交並從那里更新代碼(對我來說這似乎是神話般的)。
這些情況有什么約定嗎? 我的方法應該是什么? 任何幫助將不勝感激。
為了不從 django ORM 過濾器中得到錯誤,你可以使用這樣的exists
選項:
news_present = SingleNews.objects.filter(published_date__lte=timezone.now(), news_extras__icontains='main_lead_news').exists()
if news_present:
context['main_lead_news']=SingleNews.objects.filter(
published_date__lte=timezone.now(),
news_extras__icontains='main_lead_news').order_by('-published_date')[0]
或者像這樣使用count
選項:
news_count = SingleNews.objects.filter(published_date__lte=timezone.now(), news_extras__icontains='main_lead_news').count()
if news_count > 0:
context['main_lead_news']=SingleNews.objects.filter(
published_date__lte=timezone.now(),
news_extras__icontains='main_lead_news').order_by('-published_date')[0]
exists
不會獲取所有條目,但只會檢查過濾器查詢中是否存在任何值。 因此,它返回True
或False
。 閱讀更多: https : //docs.djangoproject.com/en/3.1/ref/models/querysets/#exists
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.