Форум сайта python.su
Ребята, привет.
Есть пара вопросов.
1) Наткнулся в документации на подобное этому:
class FileToUpload(models.Model):
title = models.CharField(max_length=50)
file = models.FileField(upload_to='uploaded')
class FileToUploadForm(ModelForm):
class Meta:
model = FileToUpload
NoReverseMatch at /Bookstore/book/
Reverse for 'django.views.generic.list_detail.object_detail' with arguments '()' and keyword arguments '{'object_id': 3}' not found.
Офлайн
И я не понимаю, вот такой вызов класса form что дает и как это использовать?Можно код? А то что-то не ясно.
и файл закачивается, но выдается ошибка в странице джангоХотелось бы увидеть urls.py, который отвечает за /Bookstore/book/
Офлайн
AlexKiriukha
1)Не понял что за код нужен… Просто, в файле model.py можно определять класс форм (наследуется от ModelForm). Как указано в документации, можно сделать так как написано выше, а можно создавать файл forms.py и в нем определять класс вместе с полями. Вот мне и не ясно, в чем разница, а если есть, то в чем?
2) mysite/urls.py
from django.conf.urls.defaults import *
from django.conf.project_template.urls import urlpatterns
from django.views.generic.list_detail import object_list, object_detail
from django.views.generic.create_update import create_object
from mysite.models import FileToUpload
create_info_file = {'model': FileToUpload}
display_info_file = {'queryset': FileToUpload.objects.all()}
urlpatterns = patterns('',
url(r'^$', 'django.views.generic.simple.direct_to_template',
{'template': 'enter.html'}),
url(r'^upload/$', 'django.views.generic.simple.direct_to_template',
{'template': 'upload.html'}),
url(r'^upload/file/$', create_object, create_info_file), )
NoReverseMatch at /mysite/upload/file/
Reverse for 'django.views.generic.list_detail.object_detail' with arguments '()' and keyword arguments '{'object_id': 7}' not found.
Офлайн
1) похоже я первое криво распарсил. Вобщем можно формы выносить в отдельный файл, а можно и нет. Так же как и admin и сигналы. Я выношу - так мне удобнее/управляемее.
2) Reverse for ‘django.views.generic.list_detail.object_detail… Там случайно в редиректе (предположительно после сохранения) нет reverse(’django.views.generic.list_detail.object_detail', object_id=7) нету? К тому же в urls.py что-то не видно имён для url'ов. Reverse делает обратное преобразование от имени и параметров к конкретному url.
Офлайн
AlexKiriukha, спасибо
Первое примерно понял, еще почитаю - не хочу тупыми вопросами забрасывать.
А вот со вторым я сижу щас, и не врубаюсь.
У меня после закачки файла нет никакого урла.
На данный момент что есть:
форма для закачки файла:
# FileToUpload_form.html
<form action="" method="post" enctype="multipart/form-data" >{% csrf_token %}
{{ form.as_p }}<br>
<input type="submit" name="submit" value="Upload" id="submit">
</form>
<form action="/success/" method="post" enctype="multipart/form-data" >{% csrf_token %}
{{ form.as_p }}<br>
<input type="submit" name="submit" value="Upload" id="submit">
</form>
def success(request):
errors = []
if request.method == 'POST':
if form.is_valid():
# Тут нужно обработчик закачки сделать. Какой - не врубаюсь. В документации http://docs.djangoproject.com/en/dev/topics/http/file-uploads/?from=olddocs мне не ясен их обработчик.
return HttpResponseRedirect('/ok')
else:
errors.append('Required everything!')
return render_to_response('FileUpload_form.html', {'errors': errors})
Офлайн
Предполагаем FileToUploadForm из первого поста, пишем в “каноническом” стиле:
def upload(request):
if request.method == 'POST':
form = FileToUploadForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return redirect('success_view_name')
else:
form = FileToUploadForm
return render_to_response('template_with_form.html', {'form': form}, RequestContext(request))
Офлайн
AlexKiriukha Спасибо. Так ка Вы написали, заработало
Офлайн
Офлайн
romankrv
Не догнал вопроса…
Офлайн
winpdb - это pdb, но только с окошечками. Pdb - дебаггер для python. Ещё в дикой природе встречается ipdb.
Офлайн