Python 带有所需临时模型数据的Django部署
首先,我对部署非常陌生。 我已经在我的windows机器中使用Django构建了一个新的报纸项目。 它在localhost中运行良好。 现在我想在pythonanywhere中部署它 我使用默认的db.sqlite3作为我的数据库。 但在生产中,我将使用MySql(MySql有简单的设置和支持) 问题: 作为一份报纸,我的网站需要很多专门的过滤。找到一个值 有时,我不得不对过滤后的数据使用列表索引,例如-(在获取上下文数据的内部): 正如您所看到的,如果“filter”没有找到任何内容,它将引发一个错误,如下所示:- 列表索引超出范围。总的来说,我的代码将在没有任何临时模型数据的情况下中断(目前,尽管其中大多数是lorem ipsum)。在代码完成之前,我已经填充了它们。现在,我如何部署我的项目,因为我可能因为这些错误而没有机会再次在线填充它们。而且我的调试将是错误的,几乎不可能运行我的代码而不发现错误 我有两个(一半!)想法- 1.在部署时,然后在配置之后,以某种方式上载sqlite3数据库 MySQL,动态地将数据从sqlite3传输到MySQL(我也不知道怎么做) 2.只需注释掉“model”中的所有视图、URL和绝对URL,除了 创建视图,然后部署它。在通过该视图填充数据库之后,我将删除Github中的commit并从中更新代码(我觉得这几乎是虚构的) 对于这种情况有什么约定吗?我的方法应该是什么?Python 带有所需临时模型数据的Django部署,python,django,database,deployment,Python,Django,Database,Deployment,首先,我对部署非常陌生。 我已经在我的windows机器中使用Django构建了一个新的报纸项目。 它在localhost中运行良好。 现在我想在pythonanywhere中部署它 我使用默认的db.sqlite3作为我的数据库。 但在生产中,我将使用MySql(MySql有简单的设置和支持) 问题: 作为一份报纸,我的网站需要很多专门的过滤。找到一个值 有时,我不得不对过滤后的数据使用列表索引,例如-(在获取上下文数据的内部): 正如您所看到的,如果“filter”没有找到任何内容,它将引发
任何帮助都将不胜感激。为了不从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]
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]
或者像这样使用count
选项:
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]
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
。阅读更多内容:非常感谢。那有帮助!