首页 > 解决方案 > 嗨,我发现很难从views.py在我的模板中传递一个显示表单请任何帮助将不胜感激

问题描述

几天来我一直在尝试修复此错误但无济于事,我真的需要有关如何在模板 Views.py中传递显示上下文的帮助

def registerView(request):
if request.method == 'POST':
    form = UserRegisterForm(request.POST)
    p_reg_form = ProfileRegisterForm(request.POST)
    if form.is_valid() and p_reg_form.is_valid():
        user = form.save()
        user.refresh_from_db()  # load the profile instance created by the signal
        p_reg_form = ProfileRegisterForm(request.POST, instance=user.profile)
        p_reg_form.full_clean()
        p_reg_form.save()
        messages.success(request, f'Your account has been sent for approval!')
        return redirect('login')
else:
    form = UserRegisterForm()
    p_reg_form = ProfileRegisterForm()
context = {
    'form': form,
    'p_reg_form': p_reg_form
}
return render(request, 'stackusers/register.html', context)

表格.py

class ProfileRegisterForm(forms.ModelForm):
class Meta:
    model = Profile
    fields = ['city', 'state', 'country', 'referral']

模型.py

class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
image = models.ImageField(default='default.jpg', upload_to='profile_pics')
confirmed = models.BooleanField("Confirmed", default=False)

city = models.CharField("City", max_length=50, blank=True)
state = models.CharField("State", max_length=50, blank=True)
country = models.CharField("Country", max_length=50, blank=True)
referral = models.CharField("Referral", max_length=50, blank=True)

def __str__(self):
    return f'{self.user.username} Profile'

def save(self, *args, **kwargs):
    super().save(*args, **kwargs)

注册.html

<form method="POST">
          {% csrf_token %}
            {{context}}
 </form>

标签: djangoforms

解决方案


在你的 template.html 中解决这个问题

<p>{{ form.as_p }}</p
<p>{{ p_reg_form }}</p

推荐阅读