Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果request.user.is_匿名:-否则:工作不正常_Python_Django - Fatal编程技术网

Python 如果request.user.is_匿名:-否则:工作不正常

Python 如果request.user.is_匿名:-否则:工作不正常,python,django,Python,Django,我在DB中创建了一行,它有两种不同的情况,一种是没有用户登录,另一种是用户登录 我曾经 if request.user.is_anonymous: [....] else: [....] 但是它只在第一行为true时保存到DB,这是if request.user.is\u anonymous:,但当用户登录时它从不保存到DB def add_ad_mod(request): created_otp = uuid.uuid4().hex[:6].upper() current

我在DB中创建了一行,它有两种不同的情况,一种是没有用户登录,另一种是用户登录

我曾经

if request.user.is_anonymous:
 [....]
else:
 [....]
但是它只在第一行为true时保存到DB,这是
if request.user.is\u anonymous:
,但当用户登录时它从不保存到DB

def add_ad_mod(request):
    created_otp = uuid.uuid4().hex[:6].upper()
    current_user = request.user
    current_ip = get_client_ip(request)
    selected = Temp.objects.filter(created_by_ip=current_ip).order_by('-created_at')[0]
    selected_category = selected.cat
    classi = Category.objects.filter(category_name__icontains="Classifieds")[0]
    jobs = Category.objects.filter(category_name__icontains="Jobs")[0]
    if request.user.is_anonymous:
        if request.method == 'POST':
            add_ad_mod_form = AddAdModForm(request.POST, request.FILES, cat=selected_category)
            if add_ad_mod_form.is_valid():
                model_instance = add_ad_mod_form.save(commit=False)
                model_instance.category = selected_category
                model_instance.post_otp = created_otp
                model_instance.save()
                add_ad_mod_form.save_m2m()
                current_email = model_instance.email
                send_mail(
                    'Activate your Ad on Jehlum',
                    'Use the code ' + created_otp + '.',
                    'test@jehlem.org',
                    [model_instance.email],
                    fail_silently=False,
                )
                request.session['created_otp'] = created_otp  # set 'student_id' in the session
                request.session['current_email'] = current_email  # set 'student_id' in the session
            return redirect('post_confirm')
        else:
            add_ad_mod_form = AddAdModForm(cat=selected_category)
    else:
        if request.method == 'POST':
            add_ad_mod_form = AddAdModForm(request.POST, request.FILES, cat=selected_category)
            if add_ad_mod_form.is_valid():
                model_instance = add_ad_mod_form.save(commit=False)
                model_instance.created_by = current_user.email
                model_instance.category = selected_category
                model_instance.email = current_user.email
                model_instance.post_otp = 0
                if request.user.is_superuser:
                    model_instance.is_active = True
                else:
                    model_instance.is_active = False
                model_instance.save()
                add_ad_mod_form.save_m2m()
            return redirect('post_success')
        else:
            add_ad_mod_form = AddAdModForm(cat=selected_category)

    add_ad_mod_form = AddAdModForm(cat=selected_category)

    context = {
        'add_ad_mod_form': add_ad_mod_form,
        'selected_category': selected_category,
        'classi': classi,
        'jobs': jobs,
    }
    return render(request, 'add_ad_mod.html', context)

是匿名的
是一种方法,因此必须调用:

if request.user.is_anonymous():  # note parentheses
    # ...

在django模板中经常会看到没有括号的版本,渲染引擎将在其中隐式调用函数。然而,在常见的Python代码中,
user.is\u anonymous
引用的函数对象总是真实的,而不管调用该函数会返回什么。

is\u anonymous
是一种方法,因此必须调用:

if request.user.is_anonymous():  # note parentheses
    # ...

在django模板中经常会看到没有括号的版本,渲染引擎将在其中隐式调用函数。然而,在常见的Python代码中,
user.is\u anonymous
引用的函数对象始终是真实的,而不管调用该函数会返回什么。

因为django 1.10
is\u anonymous
成为bool对象,而不再是方法。在旧版本中,这是一种方法。在Django 2.0中删除

正如在报告中明确提到的那样

是匿名的:只读属性,该属性始终为False。这是区分用户和匿名用户对象的一种方法。通常,您应该更喜欢使用
is\u authenticated
而不是此属性

使用
is\u authenticated

if request.user.is_authenticated:
    # authenticated user stuff
else:
    # Anonymous user

因为django 1.10
是匿名的
成为一个bool对象,不再是一个方法。在旧版本中,这是一种方法。在Django 2.0中删除

正如在报告中明确提到的那样

是匿名的:只读属性,该属性始终为False。这是区分用户和匿名用户对象的一种方法。通常,您应该更喜欢使用
is\u authenticated
而不是此属性

使用
is\u authenticated

if request.user.is_authenticated:
    # authenticated user stuff
else:
    # Anonymous user


您是否检查了is
add\u ad\u mod\u表单。当用户
不是匿名的时候,
有效吗?@BearBrown是的,检查了
后面的代码,否则:
后面的代码不检查errors@BearBrown我有
add\u ad\u mod\u表单。在
else
之后是否有效(),如果缺少另一行,请指向它
如果添加\u ad\u mod\u表单。是否有效()。。。在
else
之后,您不应该重新初始化表单以查看错误。您是否检查了is
add\u ad\u mod\u表单。当用户
不是匿名的时候,
有效吗?@BearBrown是的,我检查了
之后的代码,否则:
否您的代码在
else
之后没有检查errors@BearBrown我有
add_ad_mod_表单。是否有效()
else
之后,如果缺少另一行,请指向它
如果添加\u ad\u mod \u表单。是否有效()。。。在
else
之后,您不应该重新初始化表单以查看错误。它返回
“bool”对象不可调用
如果不请求,则使用
。用户。是否经过身份验证:
若要查看更改@AhmedWagdiDo您有自定义用户模型吗?因为
AbstractBaseUser
AnonymousUser
都是
请求的常见类型。user
implement
作为一种方法而不是字段或属性是同名的。@LemayzeurI做到了,,并且当用户被激活时,它不会给出错误,但仍然不会保存到DBauthenticated@schwobaseggl是的,我有一个自定义用户模型它返回
“bool”对象不可调用
如果没有请求,则使用
。用户。是否经过身份验证:
要查看更改@AhmedWagdid您有自定义用户模型吗?因为
AbstractBaseUser
AnonymousUser
都是
请求的常见类型。user
implement
作为一种方法,而不是字段或属性,是同名的。@LemayzeurI这样做了,并且当用户被删除时,它没有给出错误,但仍然没有保存到DBauthenticated@schwobaseggl是的,我有一个自定义用户模型