#django
#django
Вопрос:
Я создаю приложение для регистрации в django, где я хочу обновить информацию о пользователе после входа в систему. Я использую формы начальной загрузки. Возможна ли работа Django CRUD без использования модельных форм?
Я создал пользователя следующим образом:
def handleRegister(request):
if request.method == 'POST':
username = request.POST['username']
fname = request.POST['fname']
lname = request.POST['lname']
email = request.POST['email']
pass1 = request.POST['pass1']
pass2 = request.POST['pass2']
# check erronous inputs
if len(username) > 10:
messages.error(request, "Username should be less than 10 chracters")
return redirect('/')
if pass1 != pass2:
messages.error(request, "Passwords do not match")
return redirect('/')
if not username.isalnum():
messages.error(request, "Username should be alphanumeric")
return redirect('/')
# creating user here
myuser = User.objects.create_user(username, email, pass1) #creating user with the help of User(you have to import it. from django.contrib.auth.models import User)
myuser.first_name = fname
myuser.last_name = lname
myuser.save() # saving created user
messages.success(request, "Your account has been created sucessfully")
return redirect('/')
else:
return HttpResponse("404 not found")
есть ли какой-либо метод, подобный приведенному выше, где я могу обновить информацию о пользователе?
Комментарии:
1. Тот факт, что вы используете загрузочную форму, не означает, что вы не можете использовать
ModelForm
. Вам не нужно отображать форму в HTML. AModelForm
, выполняет несколько действий: проверяет ввод, сохраняет / обновляет объект в базе данных и отображает форму, но вы можете выбрать только подмножество задач.2. использование форм django для меня очень сложно
3. вы можете обновить пользователя, выполнив Profile.objects.get(user=request.user), определить пользователя с отношением onetoone в модели профиля. Таким образом, вы можете добавить дополнительную информацию о пользователе
Ответ №1:
Да, это возможно в Django.
Если вам нужно знать (или вы можете использовать имя пользователя, которое вы получили из поля ввода), обязательно используйте первичный ключ всегда:
UPDATED_fname = "user fname"
UPDATED_lname = "user lname"
myuser = myuser.objects.get(id=YOUR_USER_ID) #get with id
**OR**
myuser = myuser.objects.get(username=YOUR_username) #get with username
myuser.first_name = UPDATED_fname #update field
myuser.last_name = UPDATED_lname #update field
myuser.save() #User with that username will be updated