2014-10-31 2 views
-1

Я использую общие представления django в своем проекте CRUD. Класс CreateView использует следующий URL-адрес для работы:Django - форма CreateView на существующий вид и URL-адрес

urls.py

url(r'^create', BookCreate.as_view(model=Books, template_name='Myproj/book_create.html'),       name='book_create'), 

Если я иду www.mywebsite.com/create форма появляется только, как я хотел.

Моя проблема заключается в том, что я хочу включить форму на другую страницу, у которой уже есть URL-адрес, представление и шаблон. URL похож на один ниже:

urls.py

url(r'^author/(?P<id>[0-9]{1,})/$', author_view_handler, name='author_view'), 

Как я могу решить эту проблему?

+0

Насколько вы знакомы с работой с формами в не общих представлениях? Другими словами, вам просто нужно знать, как получить класс формы, или вам нужно знать, как обрабатывать форму в вашем представлении 'author_view_handler'? –

+0

Я знаю, как обрабатывать формы в не общих представлениях, мои проблемы начинаются с общих. CreateView создает форму для меня в URL-адресе '/ create', который перенаправляется на шаблон. Моя проблема в том, что я хочу перейти на 'author/id'url и увидеть там форму. Кажется, что для формы нужен URL-адрес только для него. – Nunovsky

+0

Общие представления используют простой «ModelForm», поэтому он должен быть таким же простым, как создание одного для модели «Книги» либо в явном классе, либо с использованием «modelform_factory», а затем создание пустого в «author_view_handler». Вероятно, я бы опустил все отношения между авторами и книгами из формы и установил это на мой взгляд. –

ответ

0

CreateView использует ModelForm. Если вы хотите использовать его также необходимо создать Книга модель формирования себя, что-то вроде этого:

 
from django.forms import ModelForm 

class BookModelForm(ModelForm): 
    pass 

А затем создать его экземпляр form=BookModelForm() и передать его в контексте вашего author_view_handler зрения.

Однако я не совсем уверен, почему вы хотели бы сделать что-то подобное ...

Update: Для того, чтобы передать его на ваш взгляд, использовать

 
from django.shortcuts import render 

def author_view_handler(request): 
    form = BookModelForm() 
    return render(request, 'author_view_handler.html', {"form": form}, 

выше просто передает форму view_view_handler и не содержат код обработки формы.

+0

или, возможно, OP хочет объединить несколько шаблонов url + view + в одном шаблоне, что-то вроде https://groups.google.com/forum/#!topic/django-users/uJ_fzpPzUkE – madzohan

+0

Я уже использую ModelForm для книг. Я просто не знаю, как передать его в представление 'author_view_handler'. Я хочу получить доступ к url ​​'author/id' и посмотреть там форму. Как передать его в контекст? – Nunovsky

 Смежные вопросы

  • Нет связанных вопросов^_^