Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » ? Хранение данных пользователей на сервере [RSS Feed]

#1 Янв. 10, 2013 22:16:43

kvadrat
От:
Зарегистрирован: 2011-07-13
Сообщения: 69
Репутация: +  1  -
Профиль   Отправить e-mail  

? Хранение данных пользователей на сервере

Посоветуйте примеры\уроки где можно разобраться с вопросом:
На сайте буду регистрироваться пользователи через джанговскую систему встроенную. Некоторые данные пользователей которые они будут вводит через форму будут иногда добавляться\ изменяться. То есть для каждого пользователя будет просто строка, куда будут вноситься некоторые строчные данные(вообще то словарь питон с данными). Я себе представляю туманно, что это будут связанные две таблицы - джанговская таблица с юзерами из админки и таблица с данными созданная. Вопрос для меня как обеспечить однозначность соответствия между строками таблицы, что бы умышленно, или в следствии какого то сбоя один юзер не стер или не изменил данные другого.
Как вообще в джанго реализуется идея хранения данных пользователей?
Дайте ченибудь почитать (не офф доки - там про это почти ничего)



Офлайн

#2 Янв. 11, 2013 14:36:33

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

? Хранение данных пользователей на сервере

Стандартное решение - определяйте модель с профилем пользователя и ссылкой на django.contrib.auth.models.User как OneToOne



Офлайн

#3 Янв. 11, 2013 14:56:08

kvadrat
От:
Зарегистрирован: 2011-07-13
Сообщения: 69
Репутация: +  1  -
Профиль   Отправить e-mail  

? Хранение данных пользователей на сервере

Есть какие то типичные уязвимости в этом решении в плане защиты информации?
Вот например чувак залогинился по имени своей почты, его строка в таблице django.contrib.auth.models.User позволяет ему записывать и читать из соответствующей(его личной) строки из таблицы данных. Он может как то поделать запрос что бы записать что то в чужую строку? Дополнительная защита какая то здесь не требуется?



Офлайн

#4 Янв. 11, 2013 15:12:51

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

? Хранение данных пользователей на сервере

Вы, видимо, не понимаете, о чем говорите. Вы доверяете стандартному джанговскому механизму авторизации? Если нет, читайте доки по джанге и ищите уязвимости, если да, то им и пользуйтесь. А на вопрос, как расширить возможности модели пользователя, я Вам ответил. Отвечу более конкретно, если Вы конкретизируете свои чаяния.



Отредактировано FishHook (Янв. 11, 2013 15:14:28)

Офлайн

#5 Янв. 11, 2013 16:15:39

kvadrat
От:
Зарегистрирован: 2011-07-13
Сообщения: 69
Репутация: +  1  -
Профиль   Отправить e-mail  

? Хранение данных пользователей на сервере

спасибо. в процессе разработки конкретезирую



Офлайн

#6 Янв. 21, 2013 18:26:21

kvadrat
От:
Зарегистрирован: 2011-07-13
Сообщения: 69
Репутация: +  1  -
Профиль   Отправить e-mail  

? Хранение данных пользователей на сервере

конкретизирую. какой самый правильный способ расширить дб user\создать профиль юзера?
здесь http://habrahabr.ru/post/118468/ товарищ указывает на проблему в django-profiles(https://bitbucket.org/ubernostrum/django-profiles), когда при использовании наследования к бд посылаются лишние запросы, нагружая сервер. он рекомендует django-primate(https://github.com/aino/django-primate). там вроде и настраивать меньше приходится. но похоже на то что то и другое решение уже не развивается пару лет(см. ссылки)
что посоветуете?



Офлайн

#7 Янв. 21, 2013 18:50:12

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

? Хранение данных пользователей на сервере

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

Отредактировано reclosedev (Янв. 21, 2013 18:53:23)

Офлайн

#8 Янв. 23, 2013 20:52:40

kvadrat
От:
Зарегистрирован: 2011-07-13
Сообщения: 69
Репутация: +  1  -
Профиль   Отправить e-mail  

? Хранение данных пользователей на сервере

Сделал все как в 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 функция которая добавляет данные в поле профиля залогининого юзера



Офлайн

#9 Янв. 24, 2013 16:21:03

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

? Хранение данных пользователей на сервере

kvadrat
Ну я сразу и добавил.
Какой? С post_save.connect(…)?

Скорее всего у уже созданных User нет профиля.

Офлайн

#10 Янв. 24, 2013 18:39:22

kvadrat
От:
Зарегистрирован: 2011-07-13
Сообщения: 69
Репутация: +  1  -
Профиль   Отправить e-mail  

? Хранение данных пользователей на сервере

да
там сказано
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 нет профиля.
но разве этот кусок не предназначен для того что бы создать профиль?
или еще что то надо во вьюхе написать?



Офлайн

  • Начало
  • » Django
  • » ? Хранение данных пользователей на сервере[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version