簡體   English   中英

具有所需臨時模型數據的 Django 部署

[英]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不會獲取所有條目,但只會檢查過濾器查詢中是否存在任何值。 因此,它返回TrueFalse 閱讀更多: https : //docs.djangoproject.com/en/3.1/ref/models/querysets/#exists

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM