Here are my accounts app models.py, urls.py, and views.py files.
Note that this profile model is the only one i created in the entire application to which my superuser account links to.
I’m not sure if both user types–superusers and registered are linked to this one Profile model, or do I need a separate model for registered users.
My goal is to create a profile page for users to display their posts in it.
models.py
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, null=True)
profile_image = models.ImageField(default='default.jpg', upload_to='profile_images', null=True)
biography = models.TextField(max_length=3000, null=True, blank=True)
skills_set = models.ManyToManyField(SkillSet, null=True)
def __str__(self):
return str(self.user)
views.py
@login_required
def profile(request):
if request.method == 'POST':
p_form = ProfileUpdateForm(request.POST, request.FILES, instance=request.user.profile)
if p_form.is_valid():
p_form.save()
messages.success(request, 'your profile has been updated.')
return redirect('membership:profile')
else:
p_form = ProfileUpdateForm(instance=request.user.profile)
context = {
'p_form':p_form,
}
return render(request,'registration/profile.html', context)
urls.py
from django.urls import path
from . import views
from django.contrib.auth import views as auth_views
app_name = 'membership'
urlpatterns = [
path('register/', views.register, name='register'),
path('login/', auth_views.LoginView.as_view(template_name='registration/login.html'), name='login'),
path('logout/', auth_views.LogoutView.as_view(template_name='registration/logout.html'), name='logout'),
path('profile/', views.profile, name='profile'),
path('edit_profile/', views.edit_profile, name='edit_profile'),
path('account_settings/', views.account_settings, name='account_settings'),
]