Поле страны не заполняется при регистрации в DjangoPython

Программы на Python
Anonymous
Поле страны не заполняется при регистрации в Django

Сообщение Anonymous »

Когда пользователь регистрируется, я хочу добавить его страну в его профиль. Но поле в базе данных остается пустым и страна не заполняется. Я новичок в аутентификации в Django, поэтому в других отношениях это может быть неправильно. Думаю, проблема может быть в порядке? Я действительно не уверен.
Views.py

Код: Выделить всё

def get_country(ip):

if ip in ['127.0.0.1', 'localhost', '::1']:
return 'Localhost'

# Perform GeoIP lookup

g = GeoIP2()
try:
result = g.city(ip)
country = result["country_name"]
except Exception as e:

print(f'Error: {e}')
country = "Unknown"

return country

def signup_view(request):
if request.method == 'POST':
form = UserCreateForm(request.POST)
if form.is_valid():
user = form.save()

# Get the user's IP address

x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
if x_forwarded_for:
ip = x_forwarded_for.split(',')[0].strip()
else:
ip = request.META.get('REMOTE_ADDR')

# Determine the user's country
country = get_country(ip)

# Create the profile with the country information

username = form.cleaned_data.get('username')
raw_password = form.cleaned_data.get('password1')
Profile.objects.create(user=user, country=country)
user = authenticate(username=username, password=raw_password)
login(request, user)

return redirect('/')
else:
form = UserCreateForm()
return render(request, 'signup.html', {'form': form})

models.py

Код: Выделить всё

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

class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
image = models.ImageField(
default='profile_pics/default.jpg', upload_to='profile_pics')
country = models.CharField(max_length=100)

def __str__(self):
return f'{self.user.username} Profile'

@receiver(post_save, sender=User)
def manage_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.get_or_create(user=instance)

Я запустил функцию get_country в оболочке с помощью RequestFactory() и получаю правильную страну в зависимости от IP-адреса. Итак, с этой функцией все в порядке. Во время регистрации в профиле обновляется информация о стране, но это не работает.

Подробнее здесь: https://stackoverflow.com/questions/788 ... -in-django

Вернуться в «Python»