LINUX.ORG.RU

Сообщения iiivanov314

 

django загрузка фото

Форум — Development

В модели выставил поле, для загрузки файла

class MyModel(Model):
    foto  = models.ImageField( upload_to='/foto/',  verbose_name='Фото' )

В представлении на базе CreateView добавил поле фото, и в форме это поле успешно появилось.

Далее, следуя документации определил переменные

MEDIA_ROOT = '/home/django314/project1/media/'
MEDIA_URL = '/media/'
и создал каталоги: media в корне своего проекта project1, foto в media.

Проблема: после выбора файла с диска и нажатии на кнопку «готово» данные не отправляются и выдается сообщение «файл не найден».

прописал в шаблоне

<form  method="post"  enctype="multipart/form-data" action=".">{% csrf_token %}
получил Bad Request (400)

Что я еще не предусмотрел? в документации говориться о request.FILES и я не могу разобраться, нужно ли что-то переопределять в наследнике CreateView или нет?

 

iiivanov314
()

django-registration сменить или напомнить пароль

Форум — Development

Регистрация пользователей производилась с помощью приложений django-registration-1.0. Как вызвать приложения позволяющие сменить пароль или напомнить его.

http://127.0.0.1:8000/accounts/password/reset/
NoReverseMatch at /accounts/password/reset/
Reverse for 'password_reset_done' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []

http://127.0.0.1:8000/accounts/password/reset/34
Page not found (404)
Request Method: 	GET
Request URL: 	http://127.0.0.1:8000/accounts/password/reset/34
Using the URLconf defined in univ.urls, Django tried these URL patterns, in this order:
    accounts/register/$ [name='registration_register']
    ^accounts/ ^activate/complete/$ [name='registration_activation_complete']
    ^accounts/ ^activate/(?P<activation_key>\w+)/$ [name='registration_activate']
    ^accounts/ ^register/$ [name='registration_register']
    ^accounts/ ^register/complete/$ [name='registration_complete']
    ^accounts/ ^register/closed/$ [name='registration_disallowed']
    ^accounts/ ^login/$ [name='auth_login']
    ^accounts/ ^logout/$ [name='auth_logout']
    ^accounts/ ^password/change/$ [name='auth_password_change']
    ^accounts/ ^password/change/done/$ [name='auth_password_change_done']
    ^accounts/ ^password/reset/$ [name='auth_password_reset']
    ^accounts/ ^password/reset/confirm/(?P<uidb36>[0-9A-Za-z]+)-(?P<token>.+)/$ [name='auth_password_reset_confirm']
    ^accounts/ ^password/reset/complete/$ [name='auth_password_reset_complete']
    ^accounts/ ^password/reset/done/$ [name='auth_password_reset_done'] 

 ,

iiivanov314
()

Как правильно защитить данные с django

Форум — Development

В таблице имеется дополнительное поле profile_id, хранящее уникальное id профиля пользователя. Пользуюсь представление на базе UpdateView. От редактирования данные удается защитить так:

class MyFormUpdate(LoginRequiredMixin,generic.UpdateView):
    model = Employee
    def form_valid(self, form):
        profile_id = ...
        record_id  = ...
        if profile_id == record_userprofile_id:
            return super(MyFormUpdate, self).form_valid(form)
        else:
           raise Http404(u"Как вам не стыдно %s" % self.request.user.get_username() )

Работает, редактировать чужие данные нельзя. Но, просмотреть чужие записи можно, перебирая числа:

myapp1/profile/update/Число

Число, как положено в стандартных View - это номер записи в таблице.

Как от этого защитить?

 

iiivanov314
()

django CreateView

Форум — Development

Подскажите, пожалуйста, как в стандартную форму представление передать значение в одно из полей. Так, требуется в поле fields1 записать id залогиненого пользователя. Это id сохранено в переменную reg_user_id.

MyFormCreate(LoginRequiredMixin,generic.CreateView):
    model = MyModel
    fields = [ 'myfield2', 'myfield3' ]
    reg_user_id = ...
    myfield1 = reg_user # как-то передать значение

вроде в док. есть

 initial = { 'myfield1':23 }
не помогает Column 'myfield1' cannot be null" ..., чего-то еще найти не удается

 

iiivanov314
()

информация о полях формы в django

Форум — Development

Уважаемые форумчане, помогите разобраться.

В djbook вычитал, что доп. информация о полях может быть указана таким образом:

class MyForm(LoginRequiredMixin,generic.UpdateView):
    model = MyModel
    fields = [ 'last_name', ... ]
    class Meta:
        fields = ( 'last_name', ... )
        labels = { 'last_name': (u'Ваша фамилия'), ... }
        help_texts = { 'name': (u'Здесь укажите Вашу фамилию'), ...   }

Увидеть эту информацию не удается:

<form action="." method="post">{% csrf_token %}
    <table>
    {{ form }}
    <tr>
        <td colspan="2"><input type="submit" value="Готово" /></td>
    </tr>
    </table>
</form>

Что я неправильно сделал? как увидеть русские подписи для полей формы и справку к ним?

 

iiivanov314
()

стандартные формы Django

Форум — Development

Существует ли инструмент в стандартных формах редактирования и удаления для запрешения их использования не залогинеными пользователями и «чужими» пользователями? Или лучше все-таки самому представления с формами писать?

Нужно: если зашел пользователь c auth_user.id = 12, то он может выполнить правку только той записи из таблицы myapp1_exuserprofile, для которой поле user_id=12.

Табличка с профилем так выглядит:


mysql> show fields from  myapp1_exuserprofile;
+-------------------+--------------+------+-----+---------+----------------+
| Field             | Type         | Null | Key | Default | Extra          |
+-------------------+--------------+------+-----+---------+----------------+
| id                | int(11)      | NO   | PRI | NULL    | auto_increment |
| user_id           | int(11)      | NO   | UNI | NULL    |                |
| first_name        | varchar(100) | NO   |     | NULL    |                |
...


А проблема, вот она. Например, возьмем стандартную форму изменения таблицы:
class ExUserProfileFormUpdate(generic.UpdateView):
    model = ExUserProfile
    fields = '__all__'

С этой формой, пользователь может изменить данные у всех пользователей. А мне нужно, чтобы пользователь менял только свои данные.

 

iiivanov314
()

django иерахическая стуктура в таблице

Форум — Development

Всем, добрый вечер!

вопрос: как создать таблицу для хранения иерархическкой структуры?

class IndexOrganizedTables(models.Model):
    id = models.AutoField(primary_key=True)
    parent_id = выбирается_из_этой_таблицы.id
    name = models.CharField(u'Имя',max_length=250)
    def __unicode__(self):
        return self.name

parent_id хранит значие id из этой же таблицы

 

iiivanov314
()

строки в python

Форум — Development

Можно ли выполнить замену в строке txt, без цикла:

>>> txt="one one two three for two"
>>> d=['one','two']
>>> w=['1','2']
>>> for a,b in zip(d,w):
...     txt=txt.replace(a,b)
... 
>>> txt
'1 1 2 three for 2'
слова из списка d заменяются на слова из списка w.

P.S. не удачная попытка:

>>> txt="one one two three for two"
>>> [ txt.replace(a,b) for a,b in zip(d,w) ]
['1 1 two three for two', 'one one 2 three for 2']

 ,

iiivanov314
()

Python сгенерировать строку

Форум — Development

Добрый вечер!

Помогите, пожалуйста, сгенерировать следующие строки на Python:

1. из range(N) сделать '{0}, {1}, {2}, ... {N}'

2. из списка list=[ e1, e2, ... , eM] сделать строку " 'Значение_из_e1', 'Значение_из_e2', ... 'Значение_из_eM' "

M,N, list - получают значения в ходе работы скрипта.

 

iiivanov314
()

RSS подписка на новые темы