我正在开发一个Django项目,用户可以在一个表单中更改他们的用户名以及他们的名字和姓氏.在forms.py中,我试图找出用户是否存在.如果是这样,它应该显示错误.问题是如果用户想要更改他的名字和姓氏并在输入中留下他的用户名,则会引发验证错误.显然,该用户名已经存在.有没有办法检查它是否等于当前登录用户的用户名并避免显示错误?
class ChangeNameForm(forms.ModelForm):
username = forms.CharField(max_length=30)
first_name = forms.CharField(max_length=255)
last_name = forms.CharField(max_length=255)
def clean_username(self):
username = self.cleaned_data['username']
try:
user = User.objects.get(username=username)
except user.DoesNotExist:
return username
raise forms.ValidationError(u'Username "%s" is already in use.' % username)
Run Code Online (Sandbox Code Playgroud)
谢谢.
使用 v-slot:body 时,Vuetify v-data-table 不会在移动设备上堆叠
如果它实现了body v-slot,如何让数据表堆叠?正如在 Vuetify 文档中可以看到的,这是正常 v-data-table 的行为方式:
这就是它在使用 body 插槽时的行为方式:
谢谢你。
我正在构建一个Django应用程序,它使用Stripe让用户互相付款.卖家需要将他们的帐户连接到Stripe,这样我就可以保存他们的访问权限并将令牌刷新到数据库中.买家也可以在付款期间向服务捐款.
如果我试图向卖家收费,我会收到一个我不太了解的错误:
"无效的令牌ID:tok_355k8o2rGvbwWLbLbNKPAcOk.用于创建此令牌的可发布密钥来自其他帐户.
卖家的访问令牌有问题,但我无法弄清楚它是什么.我已经仔细检查了我的秘密和可发布的密钥,他们没问题.
这是我在付款时使用的一段代码.
用条纹连接卖家:
def callback(request):
code = request.GET.get('code')
profile = UserProfile.objects.get(user=request.user)
r = requests.post('https://connect.stripe.com/oauth/token', params={
'client_secret': settings.STRIPE_SECRET_KEY,
'code': code,
'grant_type': 'authorization_code'
}).json()
try:
profile.access_token = r['access_token']
profile.refresh_token = r['refresh_token']
profile.save()
messages.success(request, "Your account was successfully connected to Stripe.")
except KeyError:
messages.error(request, "Unable to connect your account to Stripe.")
return redirect('home')
Run Code Online (Sandbox Code Playgroud)
收费:
def charge(request, item_id):
stripe.api_key = settings.STRIPE_SECRET_KEY
try:
item = Item.objects.get(pk=item_id)
profile = UserProfile.objects.get(user=item.owner)
access_token = profile.access_token
except Item.DoesNotExist:
raise Http404
if request.method == 'POST':
form = …Run Code Online (Sandbox Code Playgroud)