【发布时间】:2017-03-12 21:50:00
【问题描述】:
我在 django 中有以下视图,它按预期工作:
from xmlsoccer import XmlSoccer
from straightred.models import StraightredFixtureLive
@csrf_exempt
def updatefixtureslive(request, soccerseason, league):
if request.user.is_authenticated():
xmlsoccer = XmlSoccer(api_key='XYZ123ABC789', use_demo=False)
fixtureslive = xmlsoccer.call_api(method='GetLiveScoreByLeague',
league='English Premier League')
count = 0
for fixturelive in fixtureslive:
if 'Id' in fixturelive.keys():
count = count + 1
fixtureLiveUpdate = StraightredFixtureLive(fixtureid_id=fixturelive['Id'],
away_team_id = fixturelive['AwayTeam_Id'],
home_team_id = fixturelive['HomeTeam_Id'],
fixturedate = fixturelive['Date'],
fixturestatus = fixturelive['Time'],
fixturematchday_id = fixturelive['Round'],
spectators = fixturelive['Spectators'],
hometeamscore = fixturelive['HomeGoals'],
awayteamscore = fixturelive['AwayGoals'],
homegoaldetails = fixturelive['HomeGoalDetails'],
awaygoaldetails = fixturelive['AwayGoalDetails'],
hometeamyellowcarddetails = fixturelive['HomeTeamYellowCardDetails'],
awayteamyellowcarddetails = fixturelive['AwayTeamYellowCardDetails'],
hometeamredcarddetails = fixturelive['HomeTeamRedCardDetails'],
awayteamredcarddetails = fixturelive['AwayTeamRedCardDetails']
)
fixtureLiveUpdate.save()
return HttpResponse("Live games have been updated." + str(count))
else:
return HttpResponse("You must be logged in to update teams.")
我已经删除了所有我认为只是 django 特定的部分,并最终得到以下内容:
from xmlsoccer import XmlSoccer
from straightred.models import StraightredFixtureLive
xmlsoccer = XmlSoccer(api_key='XYZ123ABC789', use_demo=False)
fixtureslive = xmlsoccer.call_api(method='GetLiveScoreByLeague',
league='English Premier League')
count = 0
for fixturelive in fixtureslive:
if 'Id' in fixturelive.keys():
count = count + 1
fixtureLiveUpdate = StraightredFixtureLive(fixtureid_id=fixturelive['Id'],
away_team_id = fixturelive['AwayTeam_Id'],
home_team_id = fixturelive['HomeTeam_Id'],
fixturedate = fixturelive['Date'],
fixturestatus = fixturelive['Time'],
fixturematchday_id = fixturelive['Round'],
spectators = fixturelive['Spectators'],
hometeamscore = fixturelive['HomeGoals'],
awayteamscore = fixturelive['AwayGoals'],
homegoaldetails = fixturelive['HomeGoalDetails'],
awaygoaldetails = fixturelive['AwayGoalDetails'],
hometeamyellowcarddetails = fixturelive['HomeTeamYellowCardDetails'],
awayteamyellowcarddetails = fixturelive['AwayTeamYellowCardDetails'],
hometeamredcarddetails = fixturelive['HomeTeamRedCardDetails'],
awayteamredcarddetails = fixturelive['AwayTeamRedCardDetails'])
fixtureLiveUpdate.save()
但是,我只是收到以下错误:
bash: update_live.py: line 6: syntax error near unexpected token `('
我所追求的是寻找创建 python 文件,然后使用 crontab 在预定时间运行它。
如果有人可以就此提供任何建议,我们将不胜感激。
非常感谢,艾伦。
【问题讨论】:
-
你做错了。您不能使用 django 组件,剥离 Django 并期望它能够工作(顺便说一下,在您的示例中,
StraightredFixtureLive是一个 Django 模型,因此您应该通过该帐户将其删除)。要从 cron 启动基于 Django 的代码,您应该将其设为 management command -
明白,先生,去读一读。
-
全面的要点并了解该做什么。您能否将其作为答案,以便我接受建议。非常感谢,艾伦。
-
用完整的答案解释比我愿意花费的时间要多,尤其是如果您了解该做什么,并且已经从建议中获得了价值。很好的实施!
-
我的意思只是复制并粘贴您输入的内容。这是完全有道理的,将来可能会帮助某人。他们将转到绿色刻度并阅读而不是阅读 cmets 哈哈