首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用csrf_token和CSRF_TRUSTED_ORIGINS时,CSRF验证失败

使用csrf_token和CSRF_TRUSTED_ORIGINS时,CSRF验证失败
EN

Stack Overflow用户
提问于 2022-11-19 04:18:21
回答 1查看 28关注 0票数 0

我试图更改我的配置文件,但是当我提交表单时,它显示即使我使用csrf_token和CSRF_TRUSTED_ORIGINS,CSRF验证也失败了。

这是我的模特:

代码语言:javascript
复制
class UserProfile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    name = models.CharField(max_length=200)
    avatar = models.ImageField(default='static/images/default.jpg', upload_to='static/images')
    @classmethod
    def create(cls, authenticated_user):
        profile = cls(user=authenticated_user, name= authenticated_user)
        # do something with the book
        return profile
    def __str__(self):
        return self.user.username

我的看法是:

代码语言:javascript
复制
@login_required
def profile(request):
    """Show profile"""
    # profile = UserProfile.objects.get(id= request.user)
    profile = UserProfile.objects.get(user=request.user)
    if request.method != 'POST':
    # No data submitted; create a blank form.
        form = UserProfileForm(instance=profile)
    else:
    # POST data submitted; process data.
        form = UserProfileForm(instance=profile, data= request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect(reverse('base:index'))
    context = {'profile': profile}
    return render(request, 'users/profile.html', context)

我的模板:

代码语言:javascript
复制
{% if user.is_authenticated %}
<p>Thong tin nguoi dung:</p>
    <a>Ten nguoi dung: {{profile.name}}</a>
    <p>Anh dai dien: <img src="{{profile.avatar.url}}" alt=""></p>
    <form action="{% url 'users:profile'%}" method="post">
        {% csrf_token %}
        <input type="hidden" name="csrfmiddlewaretoken">
        <p>
            <label for="id_name">Name:</label>
            <input type="text" name="name" maxlength="200" required="" id="id_name">
        </p>
        <p>
            <label for="id_avatar">Avatar:</label>
            <input type="file" name="avatar" accept="image/*" id="id_avatar">
        </p>
        <button name="submit">save changes</button>
    </form>
{% else %}
{% endif %}

我的背景:

代码语言:javascript
复制
STATIC_URL = '/static/'

STATICFILES_DIRS = [ os.path.join (BASE_DIR, "static"), ]

STATIC_ROOT = os.path.join(BASE_DIR, 'assets')

CSRF_TRUSTED_ORIGINS = ['http://127.0.0.1']

我怎样才能总结我的表格?

EN

回答 1

Stack Overflow用户

发布于 2022-11-19 05:41:37

只需尝试将type添加到按钮标记,因为当您将操作设置为form标记时,必须将type添加到按钮标记或输入标记中。

改变这一点:

代码语言:javascript
复制
<button name="submit">save changes</button>

对此:

代码语言:javascript
复制
 <button type="submit">save changes</button>

看看能不能解决

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74497521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档