def register(request): registered = False if request.method == 'POST': user_form = UserForm(data=request.POST) profile_form = UserProfileForm(data=request.POST) if user_form.is_valid() and profile_form.is_valid(): user = user_form.save() user.set_password(user.password) user.save() profile = profile_form.save(commit=False) profile.user = user profile.save() registered = True else: print(user_form.errors, profile_form.errors) else: user_form = UserForm() profile_form = UserProfileForm() return render( request, 'snatch/register.html', { 'user_form': user_form, 'profile_form': profile_form, 'registered': registered })
def user_login(request): # 从 get 或者 post 请求中获取 next 参数值 # get 请求中,next 通过 url 传递,即 /?next=value # post 请求中,next 通过表单传递,即 <input type="hidden" name="next" value="{{ next }}"/> redirect_to = request.POST.get('next', request.GET.get('next', '')) print(redirect_to) if request.method == 'POST': user_login_form = UserProfileForm(request.POST) if user_login_form.is_valid(): # cleaned_data 清洗出合法数据 # 检验账号、密码是否正确匹配数据库中的某个用户 # 如果均匹配则返回这个 user 对象 user = authenticate( username=user_login_form.cleaned_data['username'], password=user_login_form.cleaned_data['password']) if user: # 将用户数据保存在 session 中,即实现了登录动作 login(request, user) # 登录成功之后,跳转到登录前的页面 return redirect(request.GET.get('next', '/')) else: return HttpResponse('账号或密码输入有误,请重新输入!!') else: return HttpResponse('账号或密码输入不合法!') elif request.method == 'GET': user_login_form = UserProfileForm() return render(request, 'userprofile/login.html', locals()) else: return HttpResponse('请使用GET或POST请求数据!!')
def post(self, request, *arg, **kwargs): pk = self.kwargs.get('pk') instance = None profile = None coop_admin = None errors = dict() if pk: instance = User.objects.filter(pk=pk) if instance.exists(): instance = instance[0] profile = instance.profile if hasattr(instance, 'cooperative_admin'): coop_admin = instance.cooperative_admin user_form = UserForm(request.POST, instance=instance) profile_form = UserProfileForm(request.POST, instance=profile) if user_form.is_valid() and profile_form.is_valid(): try: with transaction.atomic(): if not errors: user = user_form.save(commit=False); if not instance: user.set_password(user.password) user.save() profile_form = UserProfileForm(request.POST, instance=user.profile) profile_form.save() return redirect('profile:user_list') except Exception as e: log_error() errors['errors'] = "Error %s" % e data = {'user_form': user_form, 'profile_form': profile_form, 'coop_form': coop_form} data.update(errors) return render(request, self.template_name, data)
def user_profile(request): if request.method == 'POST': form = UserProfileForm(request.POST, instance=request.user.profile) form.save() else: # user:request.user # profile =user.profile form = UserProfileForm(instance=request.user.profile) args = {} args.update(csrf(request)) args['form'] = form return render_to_response('user.html', args)
def user_profile(request): args = {} if request.method == 'POST': form = UserProfileForm(request.POST, instance=request.user.profile) if form.is_valid(): form.save() return HttpResponseRedirect('/accounts/loggedin') else: user = request.user profile = user.profile form = UserProfileForm(instance=profile) args.update(csrf(request)) args['form'] = form return render_to_response('body/profile.html', args)
def post(self, request, *arg, **kwargs): pk = self.kwargs.get('pk') agrodealer = self.kwargs.get('agrodealer') instance = None errors = dict() if pk: instance = User.objects.filter(pk=pk) if instance.exists(): instance = instance[0] profile = instance.profile if hasattr(instance, 'cooperative_admin'): coop_admin = instance.cooperative_admin user_form = UserForm(request.POST, instance=instance) profile_form = UserProfileForm(request.POST, instance=instance) if user_form.is_valid() and profile_form.is_valid(): try: with transaction.atomic(): if not errors: user = user_form.save(commit=False) if not instance: user.set_password(user.password) user.save() profile_form = UserProfileForm(request.POST, instance=user.profile) profile_form.save(commit=False) profile_form.access_level = get_object_or_404( AccessLevel, name='AGRODEALER') profile_form.save() inst_s = AgroDealer.objects.get(pk=agrodealer) AgroDealerUser.objects.create( agrodealer=inst_s, user=user, ) return redirect('agrodealer:agrodealer_user', agrodealer=agrodealer) except Exception as e: log_error() errors['errors'] = "Error %s" % e data = { 'user_form': user_form, 'profile_form': profile_form, 'active': ['_agrodealer'] } data.update(errors) return render(request, self.template_name, data)
def user_profile(request): user = request.user profile = user.profile # TODO: delete avatar pic after user update if request.method == "POST": form = UserProfileForm( request.POST, request.FILES, instance=profile, ) if form.is_valid(): form.save() return HttpResponseRedirect('/accounts/profile/') else: form = UserProfileForm(instance=profile) context = {} context.update(csrf(request)) context['form'] = form context['profile'] = profile return render(request, 'userprofile/profile.html', context)
def edit(request): if request.method == 'POST': # If the form has been submitted... form = UserProfileForm(request.POST) # A form bound to the POST data if form.is_valid(): userprofile = UserProfile() userprofile.user = request.user userprofile.firstname = form.cleaned_data['firstname'] userprofile.lastname = form.cleaned_data['lastname'] userprofile.number = form.cleaned_data['number'] userprofile.serie = form.cleaned_data['serie'] userprofile.sexe = form.cleaned_data['sexe'] userprofile.phoneNumber = form.cleaned_data['phoneNumber'] userprofile.save() return redirect('userprofile.views.display') # Redirect after POST else: return render(request, 'userprofile/userprofile_edit.html', { 'form': form, }) else: try: userprofile = UserProfile.objects.get(pk=request.user) form = UserProfileForm({ 'firstname': userprofile.firstname, 'lastname': userprofile.lastname, 'number': userprofile.number, 'serie': userprofile.serie, 'sexe': userprofile.sexe, 'phoneNumber': userprofile.phoneNumber, }) except Exception as ex: print ex form = UserProfileForm() return render(request, 'userprofile/userprofile_edit.html', { 'form': form, })
def userprofile(request): # update user profile submit if request.method == 'POST': user_form = UserForm(request.POST, instance=request.user) user_profile = UserProfileForm(request.POST, request.FILES, instance=request.user.profile) if user_form.is_valid() and user_profile.is_valid(): user_form.save() user_profile.save() return HttpResponseRedirect(reverse('profile:user')) else: # shows form with user profile's details user_form = UserForm(instance=request.user, initial={ 'first_name': request.user.first_name, 'last_name': request.user.last_name, 'email': request.user.email, }) user = request.user profile = user.profile user_profile = UserProfileForm(instance=profile) return render(request, 'userprofile/profile.html', {'user_form': user_form, 'user_profile': user_profile})
def get(self, request, *arg, **kwarg): pk = self.kwargs.get('pk') instance = None profile = None coop_admin = None if pk: user = User.objects.get(pk=pk) if user: instance = user profile = instance.profile if hasattr(instance, 'cooperative_admin'): coop_admin = instance.cooperative_admin user_form = UserForm(instance=instance) profile_form = UserProfileForm(instance=profile) data = {'user_form': user_form, 'profile_form': profile_form} return render(request, self.template_name, data)
def checkout_completed(request, order_number): """ Handle successful checkouts """ save_info = request.session.get('save_info') order = get_object_or_404(Order, order_number=order_number) if request.user.is_authenticated: userprofile = UserProfile.objects.get(user=request.user) # Attach the user's profile to the order order.user_profile = userprofile order.save() # Save the user's info if save_info: userprofile_data = { 'default_phone_number': order.phone_number, 'default_country': order.country, 'default_postcode': order.postcode, 'default_town_or_city': order.town_or_city, 'default_street_address1': order.street_address1, 'default_street_address2': order.street_address2, 'default_county': order.county, } user_profile_form = UserProfileForm(userprofile_data, instance=userprofile) if user_profile_form.is_valid(): user_profile_form.save() messages.success( request, f'Order successfully processed! \ Your order number is {order_number}. A confirmation \ email will be sent to {order.email}.') if 'shoppingbag' in request.session: del request.session['shoppingbag'] template = 'checkoutitems/checkout_completed.html' context = { 'order': order, } return render(request, template, context)
def register(request): # create flag for successful registration registered = False # if submitted, process form if request.method == 'POST': # grab information from forms user_form = UserForm(data=request.POST) profile_form = UserProfileForm(data=request.POST) payment_form = PaymentForm(data=request.POST) # if those are valid, continue if user_form.is_valid() and profile_form.is_valid( ) and payment_form.is_valid(): # save user form to database user = user_form.save() # hash password and send to user object user.set_password(user.password) # save user user.save() # prepare userprofile form profile = profile_form.save(commit=False) # connect userprofile with user profile.user = user # if profile picture provided, save it if 'picture' in request.FILES: profile.picture = request.FILES['picture'] # save userprofile profile.save() # Do same thing for payment as profile payment = payment_form.save(commit=False) payment.user = user payment.save() # flag successful registration registered = True # else forms invalid, print errors else: print(user_form.errors, profile_form.errors) # else show the registration form else: user_form = UserForm() profile_form = UserProfileForm() payment_form = PaymentForm() # Render the template depending on the context. return render( request, 'userprofile/register.html', { 'user_form': user_form, 'profile_form': profile_form, 'payment_form': payment_form, 'registered': registered })