简体   繁体   English

我想在新用户使用 Signals 注册时向用户个人资料显示默认图片,而无需从 Django 管理员手动进行

[英]I want to show the Default pic to the user profile whenever a new user is registered using Signals without doing it manually from Django admin

I want to load the default pic of the user, whenever a new user is created using signals.每当使用信号创建新用户时,我想加载用户的默认图片。 But its not loading the default pic.但它没有加载默认图片。 I don't want to do this manually from Django admin, I want this to be done whenever a new user is created in the app.我不想从 Django 管理员手动执行此操作,我希望在应用程序中创建新用户时执行此操作。

models.py模型.py

from django.db import models
from django.contrib.auth.models import User


class userprofile(models.Model):
    user = models.OneToOneField(User,on_delete = models.CASCADE)
    profilepic = models.ImageField(default='pp.png',upload_to='profile_pic',blank = True)

forms.py forms.py

from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
from .models import userprofile



class ProfileUpdateForm(forms.ModelForm):
    class Meta:
        model = userprofile
        fields = ['profilepic',]

views.py视图.py


@login_required
def profile(request):    
    if request.method == 'POST':
        p_form = ProfileUpdateForm(request.POST,request.FILES,instance=request.user.userprofile)
        if p_form.is_valid():
            p_form.save()        
            return render(request,'profile.html')
    else:
        p_form = ProfileUpdateForm(instance=request.user.user)

    context = {
        'p_form': p_form        
        }

    return render(request,'profile.html',context)

profile.html简介.html

<form method ="POST" class="sm:w-1/3 text-center sm:pr-8 sm:py-8" enctype="multipart/form-data" >
            {% csrf_token %}
            <img id="profile_pic" alt="team" class="flex-shrink-0 rounded-lg w-full h-56 object-cover object-center mb-4" src="{{user.userprofile.profilepic.url}}">
            {{ p_form|crispy }}
            <br>
            <input id="file-input" style="padding: 8px 93px;" class="text-white bg-green-500 border-0 py-2 px-8 focus:outline-none hover:bg-green-700 rounded text-lg" type="submit" value="Upload">
</form>

signalspy信号间谍

from django.db.models.signals import post_save
from django.contrib.auth.models import User
from django.dispatch import receiver
from .models import userprofile


@receiver(post_save, sender=User)
def create_profile(sender, instance, created, **kwargs):
    if created:
        userprofile.objects.create(user=instance)


@receiver(post_save, sender=User)
def save_profile(sender, instance, **kwargs):
    instance.profile.save()

apps.py应用程序.py

from django.apps import AppConfig


class HomepageConfig(AppConfig):
    name = 'Homepage'


    def ready(self):
        import users.signals

First thing load the image outside the form.首先加载表单外的图像。 Then add the default image inside media and outside the folder where you upload the profile picture.然后在媒体内部和上传个人资料图片的文件夹外部添加默认图像。 在此处输入图像描述

As you can see it is inside the root of media folder.如您所见,它位于媒体文件夹的根目录中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Django 使用信号保存用户和配置文件 - Django save user and profile with signals 使用 Signals 在 django 中注册用户后,如何创建用户配置文件? - How can I create user profile after registering user in django using Signals? 如何使用信号基于Django中的用户属性创建特定的配置文件 - How to create a particular profile based on user attribute in Django using signals 使用 signals.py 删除 Django 上的配置文件时如何删除所有用户数据 - How can I delete all user data when deleting profile on Django using signals.py 如何在不使用Django表单的情况下让用户手动在Django中保存或编辑其个人资料信息 - How to let user save or edit his profile info in Django manually without using Django forms Django手动保存用户配置文件 - Django save user profile manually 我想在相关用户的个人资料中使用Django中的模板标签显示用户的产品 - I want show user's products in related user's profile with template tags in Django “ django.contrib.admin.sites.NotRegistered:未注册模型用户”想要注册我的自定义用户时出现此错误。 - “django.contrib.admin.sites.NotRegistered: The model User is not registered” I get this error when a want to register my Custom User. 用户配置文件(客户和员工)的 Django 信号 - Django signals for user profile (Customer and Employee) Django 用户注册后未创建配置文件的信号 - Django Signals not creating profile after user registration
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM