即使布尔值发生变化,我的if语句总是会转到Else?在Django 1.6.5工作
views.py
def awaiting_email_confirmation(request):
confirmed = EmailConfirmed.objects.get(user=request.user)
print confirmed
if confirmed is False:
print "if"
template = 'accounts/email_confirmation.html'
context = {}
return render(request, template, context)
else:
print "else"
return HttpResponseRedirect(reverse("dashboard"))
Run Code Online (Sandbox Code Playgroud)
我的控制台将打印
True
else
False
else
Run Code Online (Sandbox Code Playgroud)
这是我确认的电子邮件的model.py.
class EmailConfirmed(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL)
activation_key = models.CharField(max_length=200)
confirmed = models.BooleanField(default=False)
def __unicode__(self):
return str(self.confirmed)
Run Code Online (Sandbox Code Playgroud) 我遇到了 get_or_create 语句的问题。如果有记录但不创建记录,它会获取记录。我的所有模型字段都有默认值。
我的视图.py
from django.contrib.auth.decorators import login_required
from django.shortcuts import render, HttpResponseRedirect, Http404, get_object_or_404
from django.contrib.auth import logout, login, authenticate
from django.contrib.auth.models import User
from django.contrib import messages
from django.core.urlresolvers import reverse
from django.utils.safestring import mark_safe
# Create your views here.
from .models import UserProfile
@login_required
def profile_view(request):
user = request.user
account = request.user
profile = UserProfile.objects.get_or_create(UserProfile, user=user)
context = {'profile': profile, 'account': account, }
template = 'profiles/profile.html'
return render(request, template, context)
Run Code Online (Sandbox Code Playgroud)
我得到的回溯是:
ypeError at /profiles/
get_or_create() takes exactly …
Run Code Online (Sandbox Code Playgroud) 我在显示登录的用户配置文件时遇到问题。我创建了一个配置文件应用程序,其中包含一些用户详细信息,例如地址。
def profile_view(request):
user_id = request.user.user_id
profile = UserProfile.objects.get(user_id=user_id)
context = {'profile': profile}
template = 'profiles/profile.html'
return render(request, template, context)
Run Code Online (Sandbox Code Playgroud)