【问题标题】:How to perform more than one operation in django function view如何在 django 函数视图中执行多个操作
【发布时间】:2019-05-27 06:53:20
【问题描述】:

我正在尝试在单个功能视图中执行 2 个操作。但它只执行第一个操作。我第一次提到的哪个操作只执行了第二个操作没有执行。解决此问题的任何其他方法。

def home_view(request):
    if 'username' in request.session:
        if 'username' in request.session:
            username = request.session['username']
            business_objs = AddBusiness.objects.all().values()
            return render(request, 'home/index.html', {'business_objs': business_objs})
        elif request.method == 'GET':
            username = request.session['username']
            form = ProfileForm(request.POST)
            if form.is_valid():
                profile_info = Profile.objects.filter(username=username).values()
                for i in profile_info:
                    profiledict = i
                    return render(request, 'home/index.html',
                                  {'profile_first_name': profiledict['first_name'],
                                   'profile_last_name': profiledict["last_name"],
                                   'profile_phone_number': profiledict['phone_number'],
                                   'profile_email': profiledict['email'], 'profile_address': profiledict['address'],
                                   'profile_image': profiledict['image']})
                return redirect('/home/')
            return redirect('/home/')

    else:
        return redirect('/login/')

【问题讨论】:

  • 它没有被执行,因为你在第一个条件之后返回响应,所以它根本不检查下一个条件。如果您希望执行更多逻辑,则需要在返回响应之前执行此操作。

标签: django django-views


【解决方案1】:

我认为你可以这样尝试:

def home_view(request):
    if 'username' in request.session:
        if 'request.method == 'GET':
            username = request.session['username']
            business_objs = AddBusiness.objects.all().values()
            return render(request, 'home/index.html', {'business_objs': business_objs})
        elif request.method == 'POST':
            username = request.session['username']
            form = ProfileForm(request.POST)
            if form.is_valid():
                profile_info = Profile.objects.filter(username=username).values()
                for i in profile_info:
                    profiledict = i
                    return render(request, 'home/index.html',
                                  {'profile_first_name': profiledict['first_name'],
                                   'profile_last_name': profiledict["last_name"],
                                   'profile_phone_number': profiledict['phone_number'],
                                   'profile_email': profiledict['email'], 'profile_address': profiledict['address'],
                                   'profile_image': profiledict['image']})
                return redirect('/home/')
            return redirect('/home/')

    else:
        return redirect('/login/')

这样,您将能够使用此基于函数的视图处理GETPOST 请求。更多信息可以在documentation找到。

【讨论】:

猜你喜欢
  • 2021-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多