django - 如何将 URL 参数传递给 django CBV?

标签 django django-urls django-class-based-views

我有一个 urls.py 文件设置如下

from django.conf.urls import patterns, include, url
from .views import *

urlpatterns = patterns('',
    url(r'^$', BlogListView.as_view()),
    url(r'(?P<blog_id>)\d{1,}/$', BlogDetailView.as_view())
)

与相关的观点
class BlogDetailView(View):
    def get(self, request, blog_id, *args, **kwargs):
        post = Blog.objects.get(post_id=blog_id).to_detail_json
        return HttpResponse(json.dumps(post), mimetype='application/json')

访问 127.0.0.1:8000/blog/1/时出现错误
ValueError at /blog/4/
invalid literal for int() with base 10: ''

但如果我改变
post = Blog.objects.get(post_id=blog_id).to_detail_json


post = Blog.objects.get(post_id=1).to_detail_json

然后我得到了正确的回应。

如果需要,这是我的模型
from mongoengine import *
from collections import OrderedDict

import datetime
import json

class Blog(Document):
    post_id = IntField(unique=True)
    title = StringField(max_length=144, required=True)
    date_created = DateTimeField(default=datetime.datetime.now)
    body = StringField(required=True)

    def __init__(self, *args, **kwargs):
        self.schema = {
        "title": self.title,
        "date": str(self.date_created),
        "id": self.post_id,
        "body": self.body
    }
            super(Blog, self).__init__(*args, **kwargs)
    @property
    def to_detail_json(self):
        fields = ["id","title", "date", "body"]
        return {key:self.schema[key] for key in fields}

    @property
    def to_list_json(self):
        fields = ["title", "date"]
        return {key:self.schema[key] for key in fields}

更新

我将 BlogDetailView 更改为返回
return HttpResponse(json.dumps(self.kwargs),mimetype='application/json')

它给了我
{
    blog_id: ""
}

这让我相信它与我的 urls.py 文件有关,但我没有看到错误。

最佳答案

尝试

post = Blog.objects.get(post_id=self.kwargs['blog_id']).to_detail_json

关于django - 如何将 URL 参数传递给 django CBV?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17414550/

相关文章:

Django:行级权限是针对特定规则的,还是关于 View ?

django - Django 中实现的 ON DELETE CASCADE 逻辑在哪里? (使用的是PostgreSQL)

django - 反向 django 自定义管理站点 URL

python - django 删除模板中的硬编码 URL

python - 对 'home' 进行反向操作,未找到参数 '()' 和关键字参数 '{}'。 0 个图案

python - 如何对过滤后的搜索查询进行排序/排序并将其呈现在 Django 上的另一个模板上?

python - 如何使用 Bootstrap Modal 在 Django 中使用基于类的 View 删除对象?

django - 学习 Django 1.5 的最佳方式是什么?

python - celery任务的实时进度跟踪

python - 在 Django 中使用 CBV 进行重定向