0

Django でdjango-respiteを使用しようとしていますが、新しいオブジェクトの作成に問題があります。

通常のDjangoビューでは、私は持っているでしょう

def post_new(request):
    if request.method == 'POST':    
        form = PostForm(request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect("/posts/")
        else:
            form = PostForm()

    ctx = {'form': form}
    return render_to_response('app_post/new_post.html', ctx, RequestContext(request))

私はそれを休息に移植しようとしました(ドキュメントはGETメソッドについてのみ話します)、そして私はこれを思いつきました:

# views.py
class PostViews(Views):
    supported_formats = ['html', 'json']
    template_path     = 'post/'

    def index(self, request):    
        ...

    def show(self, request, id):
        ...

    def create(self, request):
        form = PostForm(request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect("posts/")

        return self._render(
            request = request,
            template = 'new_post',
            context = {
                'form': form
            },
       )

    def new(self, request):
        form = PostForm()

        return self._render(
            request = request,
            template = 'new_post',
            context = {
                'form': form
            },
    )


# urls.py
urlpatterns = resource(
    prefix = 'posts/',
    views = PostViews,
    routes = [
        routes.route(
             regex = r'^(?:$|index%s$)' % (templates.format),
             view = 'index',
             method = 'GET',
             name = 'posts'
        ),
        routes.route(
             regex = r'^(?P<id>[0-9]+)%s$' % (templates.format),
             view = 'show',
             method = 'GET',
             name = 'post'
        ),
        # New
        routes.route(
             regex = r'^(?:$|new%s$)' % (templates.format),
             view = 'new',
             method = 'GET',
             name = 'post_new'
        ),
        # Create
        routes.route(
             regex = r'^(?:$|create%s$)' % (templates.format),
             view = 'create',
             method = 'POST',
             name = 'post_create'
        )])

でも行こうとすると

http://localhost:8000/posts/new.html 

私は得る

'PostViews' object has no attribute 'new'

POST とフォームをレスパイトで管理する方法を誰かが説明してくれませんか?

4

0 に答える 0