我一直致力于使用Google日历API来管理会议(将会议添加到用户日历,向人们发送会议邀请等)的Django应用程序。
但是某些用户日历中没有出现日历事件,但存在一些不一致之处。我开始研究这个问题,并且之前没有在我的开发环境中运行Google Calendars API(尽管我可以访问应用程序中用于日历的代码,其状态是在我开始处理它之前的状态),我在developers.google.com上按照部分教程尝试在我的开发机器上启动并运行现有的Calendar API,但在尝试向其添加Calendars API时,却以某种方式设法破坏了工作代码。 / p>
当我现在尝试通过在浏览器中输入www.mysite.co.uk浏览我的网站时,我得到一个错误页面,上面写着:
/ projects / my-projects /
中的NameError全球名称' h_user'未定义
请求方法:GET
请求网址:http://www.mysite.co.uk/projects/my-projects/
Django版本:1.9.1
异常类型:NameError
例外值:
全球名称' h_user'未定义异常位置:/ code/moon/core/templatetags/getters.py in get_invite_details,第153行
Python可执行文件:/ usr / bin / python
Python版本:2.7.6
Python路径:
[' /代码/月亮&#39 ;, '在/ usr / local / bin中&#39 ;, ' /usr/local/lib/python2.7/dist-packages/pip-8.1.2-py2.7.egg' ;, ' /usr/lib/python2.7' ;, ' /usr/lib/python2.7/plat-x86_64-linux-gnu' ;, ' /usr/lib/python2.7/lib-tk' ;, ' /usr/lib/python2.7/lib-old' ;, ' /usr/lib/python2.7/lib-dynload' ;, ' /usr/local/lib/python2.7/dist-packages' ;, ' /usr/lib/python2.7/dist-packages']服务器时间:2017年1月11日星期三09:08:01 +0000
首先,我不明白为什么要输入' root'我的网站(www.mysite.co.uk)的地址返回了一个“请求网址”' www.mysite.co.uk/projects/my-projects - 这是该网站上的一个页面,但不是' Home'页面,只有在点击'项目'从菜单链接。为什么我被路由到这个特定的页面?
浏览器中的错误页面显示详细信息:
模板渲染期间出错
在模板/code/moon/projects/templates/projects/my_projects.html中,第0行出错
全球名称' h_user'未定义
和'追溯'表示以下文件中存在错误:
芯/ templatetags / getters.py:
def get_invite_details(user, responded=False):
from calendar_api.manager import get_event
from django.utils.dateparse import parse_datetime
from events.models import Meeting
if user.is_authenticated():
employee = user.employee
if responded: e_invites = employee.event_notifications.all()
else: e_invites = employee.event_notifications.filter(responded=False)
events_data = [get_event(i.calendar_id, i.event_id) for i in e_invites]
invites = []
for event in events_data:
if event and event['id']:
invite = [event['summary'] or '', parse_datetime(event['start'].get('date') or event['start'].get('dateTime')) or '']
m = Meeting.objects.filter(event_id=event['id'])
if m:
m = m[0].event_creator
print "m'", m
invite += [m]
else:
creator = Employee.objects.filter(calendar_id=event.get('organizer').get('email'))
if creator: invite += [creator.first()]
else: invite += [h_user]
invite += [event['id']]
invite += [e_invites.get(event_id=event['id']).responded]
if responded and is_attending(event, employee.calendar_id): invite += [1]
invites += [invite]
return invites
'追溯'表示此文件中的错误在行:
else: invite += [h_user]
项目/ views.py:
def my_projects(request):
context = {'projects': request.user.employee.settings.allocated_projects.all()}
if request.is_ajax() and request.GET.get('filter'):
return JsonResponse(filter_projects_name(request, context['projects'], 'projects/includes/project_cards.html'))
return render(request, 'projects/my_projects.html', context)
'追溯'表示此文件中的错误在行:
return render(request, 'projects/my_projects.html', context)
mysite的/ middleware.py:
def process_view(self,request,view_func,view_args,view_kwargs):
# An exception match should immediately return None
for path in self.exceptions:
if path.match(request.path): return None
# Requests matching a restricted URL pattern are returned
# wrapped with the permission_required decorator
for rule in self.restricted:
url, required_permission = rule[0], rule[1]
if url.match(request.path):
return permission_required(required_permission)(view_func)(request,*view_args,**view_kwargs)
# Explicitly return None for all non-matching requests
return None
'追溯'表示此文件中的错误在行:
return permission_required(required_permission)(view_func)(request,*view_args,**view_kwargs)
我理解变量h_user
没有被定义的错误 - 并且查看了使用它的文件,我无法看到它被定义的任何地方......但我不会&#39我明白为什么我现在收到这个错误,当我没有尝试使用谷歌日历API时 - 我不认为它会发生什么来自API,因为变量名称表示它与我正在处理的软件有关,所以很可能这是由我从他们接管之前的软件工作人员编写的。但是如何/为什么尝试集成/使用Calendars API会打破这个?
如果我尝试在浏览器中查看我的项目的本地副本,从" localhost:8000",我将被带到同一页面,因为它试图引导我进入'住'版本(localhost:8000 / projects / my-projects /),但它可以在我的localhost上运行,并且我能够与页面完全交互。事实上,我能够完全与我本地主机上的整个网站进行互动 - 除非我点击“日历”#39;菜单上的选项,然后我在浏览器中显示错误消息:
/ events / cal / 2017/1 /
中的RelatedObjectDoesNotExist项目没有任务组。
如何解决此问题,让Google日历与我的网站一起正常运作?