Как работать с мезонином

processor_for.py

from django import forms
from django.http import HttpResponseRedirect
from mezzanine.pages.page_processors import processor_for
from .models import Book

class BookForm(forms.Form):
    name = forms.CharField()
    email = forms.EmailField()

@processor_for(Author)
def author_form(request, page):
    form = BookForm()
    if request.method == "POST":
        form =BookForm(request.POST)
        if form.is_valid():
            # Form processing goes here.
            redirect = request.path + "?submitted=true"
            return HttpResponseRedirect(redirect)
    return {"form": form}

models.py

from django.db import models
from time import time
class Book(models.Model):
   book_name= models.CharField(max_length=200, unique = True)
    def __unicode__(self):
        return self.book_name

views.py

def create_book (request):
    if request.POST:
        form = BookForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/all/')
    else:
        form = BookForm()
    args= {}
    args.update(csrf(request))
    args['form'] = form
    return render_to_response('create_Book.html', args)

urls.py

urlpatterns += patterns('',
    url(r'^/xyz/$', create_book))

create_Book.html

<form action="/xyz/" method="post" enctype="multipart/form-data">{% csrf_token %}
{{form.as_ul}}
<input type="submit" name="submit" value="create"/>
</form>

Это то, что я делаю, но я все еще не могу получить доступ к форме. Где я делаю неправильно. буду вам благодарен. Пожалуйста, отметьте, что не так в коде?

2 ответа

Решение

Две проблемы с синтаксисом:

1) Всегда определяйте имя вашего процессора в " " как @processor_for("Author")

2) URL для процессоров страниц, таких как:

 url("^xyz/$", "mezzanine.pages.views.page", {"slug": "Author"},  name="Author"),

Согласно вашему коду и вашему объяснению. Пожалуйста, смотрите ваш код в urls.py

urlpatterns + = Patterns('',
    url(r'^xyz/$', create_book))       # вы должны писать как ^ xyz / $

Пожалуйста, следуйте документации Django

Другие вопросы по тегам