我是Django Framework的新手,并试图通过创建一个用户可以发布的网站来学习它。
我希望允许用户在注册后编辑其个人资料,但是我在网上发现的教程并不简单明了。 像这两个: https://www.youtube.com/watch?v=D9Xd6jribFU https://www.youtube.com/watch?v=CQ90L5jfldw
这是view.py:
from django.shortcuts import render,redirect
from .forms import RegisterForm, UserUpdateForm, ProfileUpdateForm
from django.contrib import messages
from django.contrib.auth.decorators import login_required
def register(response):
if response.method == "POST":
form = RegisterForm(response.POST)
if form.is_valid():
form.save()
username = form.cleaned_data.get('username')
messages.success(response, f'Your account has been created!')
return redirect("blog-home")
else:
form = RegisterForm()
return render(response,"register/register.html",{"form":form})
@login_required
def profile(request):
if request.method == 'POST':
user_form = UserUpdateForm(request.POST, instance=request.user)
profile_form = ProfileUpdateForm(request.POST, request.FILES, instance=request.user.profile)
if user_form.is_valid() and profile_form.is_valid():
user_form.save()
profile_form.save()
messages.success(request, f'Your account has been updated!')
return redirect('profile')
else:
user_form = UserUpdateForm(instance=request.user)
profile_form = ProfileUpdateForm(instance=request.user.profile)
contex={'u_form':user_form, 'p_form':profile_form}
return render(request, 'users/profile.html', context)
以及profile.html:
{% extends "blog/base.html" %}
{% load crispy_forms_tags %}
{% block content %}
<div class="content-section">
<div class="media">
<img class="rounded-circle account-img" src="{{ user.profile.image.url }}">
<div class="media-body">
<h2 class="account-heading">{{ user.username }}</h2>
<p class="text-secondary">{{ user.email }}</p>
</div>
</div>
<form method="POST" enctype="multipart/form-data">
{% csrf_token %}
<fieldset class="form-group">
<legend class="border-bottom mb-4">Profile Info</legend>
{{ user_form|crispy }}
{{ profile_form|crispy }}
</fieldset>
<div class="form-group">
<button class="btn btn-outline-info" type="submit">Update</button>
</div>
</form>
</div>
{% endblock content %}
如果有人帮助我,我将不胜感激 谢谢