Django - Modelform无法渲染

问题描述 投票:0回答:1

我创建了一个表单来更新用户的配置文件,但是当我运行它时,没有错误,但是当我尝试打开页面时,会出现标题,但不会出现UpdateBioForm。其次,我想知道如何创建一个大文本框来存储某人的传记。

models.朋友

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    biography = models.CharField(max_length = 255, default = '')
    city = models.CharField(max_length=100, default = '')
    website = models.URLField(default='')
    image = models.ImageField(upload_to='profile_image', blank=True)

    def setdefault(self, default_path='/profile_image/Default.jpg'):
        if self.image:
            return self.image
        return default_path

    def __str__(self):
        return self.user.username

forms.py

class UpdateBioForm(forms.ModelForm):

    class Meta:
        model = UserProfile
        fields = (
            'biography',
            'city',
            'website'
        )

    def save(self, commit=True):
        savedBio = super(UpdateBioForm, self).save(commit=False)
        savedBio.biography = self.cleaned_data['biography']
        savedBio.city = self.cleaned_data['city']
        savedBio.website = self.cleaned_data['website']

        if commit:
            savedBio.save()

        return savedBio

views.朋友

def update_bio(request):
    if request.method == 'POST':
        form = UpdateBioForm(request.POST, instance=request.user)

        if form.is_valid():
            form.save()
            return redirect('/')
    else:
        form = UpdateBioForm(instance=request.user)
    args = {'form':form}
    return render(request, 'accounts/update_bio.html')

URLs.朋友

url(r'^profile/updatebio/$',views.update_bio, name='update_bio'),

update_bio.html

{% extends 'base.html' %}

{% block body %}
<div class="container">
    <h1>Update Biography</h1>
    <form method="post">
        {% csrf_token %}
        {{ form.as_p }}
        <button type="submit">Submit</button>
    </form>
</div>
{% endblock %}
django forms views modelform
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.