根据try / except和django中的条件显示特定对象

时间:2019-05-16 08:35:22

标签: django django-views

我正在django项目上工作,需要一些帮助才能在某些情况下管理和显示对象。

到目前为止,我还没有克服显示条件的问题。

此对象是可以显示的用户指南:

  • 英语
  • 法语
  • 英语和法语
  • 没有用户指南

然后,有几种情况:

  • 如果没有使用所选语言的用户指南,则无论使用哪种语言,它都会显示在服务器上。
  • 如果根本没有用户指南,则显示带有错误消息的主页。

到目前为止,如果不存在特定语言的用户指南,它将自动重定向到我的主页,并显示错误消息,而不是显示其他语言的用户指南。

这是我的代码:

def get(self, request):
    if request.user.is_anonymous:
        try:
            curr_lang = ''
            if '_language' in request.session:
                curr_lang = request.session['_language']
            else:
                curr_lang = 'en'
            if request.cur_app.guides.get(profile_type='', profile_level='', language=curr_lang).exists():
                guide = request.cur_app.guides.get(profile_type='', profile_level='', language=curr_lang)
            else:
                guide = request.cur_app.guides.get(profile_type='', profile_level='')

        except UserGuide.DoesNotExist:
            messages.error(request, _('No user guide is available'))
            return redirect('home')

如何处理不同的案件?

非常感谢您

更新:

我写道,这似乎可行,但我不知道这是否是一种好方法:

from django.utils.safestring import mark_safe

def get(self, request):
    if request.user.is_anonymous:
        try:
            curr_lang = ''
            if '_language' in request.session:
                curr_lang = request.session['_language']
            else:
                curr_lang = 'en'
            guide = request.cur_app.guides.get(profile_type='', profile_level='', language=curr_lang)

        except UserGuide.DoesNotExist:
            try:
                guide = request.cur_app.guides.get(profile_type='', profile_level='')
                filename = str(guide.file)
                messages.error(request, mark_safe(_("No user guide is available on your " + curr_lang + " language. Please find the default userguide in : <a href='media/%s'>userguide</a>" % (filename))))
            except UserGuide.DoesNotExist:
                messages.error(request, _('No user guide is available'))
            return redirect('home')

0 个答案:

没有答案