Найти - Пользователи
Полная версия: ? Хранение данных пользователей на сервере
Начало » Django » ? Хранение данных пользователей на сервере
1 2
kvadrat
Посоветуйте примеры\уроки где можно разобраться с вопросом:
На сайте буду регистрироваться пользователи через джанговскую систему встроенную. Некоторые данные пользователей которые они будут вводит через форму будут иногда добавляться\ изменяться. То есть для каждого пользователя будет просто строка, куда будут вноситься некоторые строчные данные(вообще то словарь питон с данными). Я себе представляю туманно, что это будут связанные две таблицы - джанговская таблица с юзерами из админки и таблица с данными созданная. Вопрос для меня как обеспечить однозначность соответствия между строками таблицы, что бы умышленно, или в следствии какого то сбоя один юзер не стер или не изменил данные другого.
Как вообще в джанго реализуется идея хранения данных пользователей?
Дайте ченибудь почитать (не офф доки - там про это почти ничего)
FishHook
Стандартное решение - определяйте модель с профилем пользователя и ссылкой на django.contrib.auth.models.User как OneToOne
kvadrat
Есть какие то типичные уязвимости в этом решении в плане защиты информации?
Вот например чувак залогинился по имени своей почты, его строка в таблице django.contrib.auth.models.User позволяет ему записывать и читать из соответствующей(его личной) строки из таблицы данных. Он может как то поделать запрос что бы записать что то в чужую строку? Дополнительная защита какая то здесь не требуется?
FishHook
Вы, видимо, не понимаете, о чем говорите. Вы доверяете стандартному джанговскому механизму авторизации? Если нет, читайте доки по джанге и ищите уязвимости, если да, то им и пользуйтесь. А на вопрос, как расширить возможности модели пользователя, я Вам ответил. Отвечу более конкретно, если Вы конкретизируете свои чаяния.
kvadrat
спасибо. в процессе разработки конкретезирую
kvadrat
конкретизирую. какой самый правильный способ расширить дб user\создать профиль юзера?
здесь http://habrahabr.ru/post/118468/ товарищ указывает на проблему в django-profiles(https://bitbucket.org/ubernostrum/django-profiles), когда при использовании наследования к бд посылаются лишние запросы, нагружая сервер. он рекомендует django-primate(https://github.com/aino/django-primate). там вроде и настраивать меньше приходится. но похоже на то что то и другое решение уже не развивается пару лет(см. ссылки)
что посоветуете?
reclosedev
http://python.su/forum/post/102071/
…для профайлов есть стандартные решения
https://docs.djangoproject.com/en/1.4/topics/auth/#storing-additional-information-about-users
Но в 1.5 изменится
https://docs.djangoproject.com/en/dev/topics/auth/#auth-custom-user
Тольо для 1.5 ссылка изменилась:
https://docs.djangoproject.com/en/1.5/topics/auth/customizing/#auth-custom-user
kvadrat
Сделал все как в https://docs.djangoproject.com/en/1.4/topics/auth/#storing-additional-information-about-users
Но при попытке во вьюхе добраться до бд профиля (profile = request.user.get_profile()) получаю:
UserProfile matching query does not exist.
Общая ответ в гугле на этот вопрос такой - это потому что get_profile не создает профиль, а что бы он создался нужно добавить в модель некоторый код (там же по ссылке). Ну я сразу и добавил.
Аналогичные посты на гитхабе не помогли.
Напишите пожалуйста в 3 строчки, как должна выглядеть во view функция которая добавляет данные в поле профиля залогининого юзера
reclosedev
kvadrat
Ну я сразу и добавил.
Какой? С post_save.connect(…)?

Скорее всего у уже созданных User нет профиля.
kvadrat
да
там сказано
The method get_profile() does not create a profile if one does not exist. You need to register a handler for the User model's django.db.models.signals.post_save signal and, in the handler, if created is True, create the associated user profile:
# in models.py

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

# definition of UserProfile from above
# ...

def create_user_profile(sender, instance, created, **kwargs):
if created:
UserProfile.objects.create(user=instance)

post_save.connect(create_user_profile, sender=User)
reclosedev
Скорее всего у уже созданных User нет профиля.
но разве этот кусок не предназначен для того что бы создать профиль?
или еще что то надо во вьюхе написать?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB