I have setup urls.py file as follows
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()) )
with correlation representation
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')
I get an error when visiting 127.0.0.1:8000/blog/1/
ValueError at /blog/4/ invalid literal for int() with base 10: ''
but if i change
post = Blog.objects.get(post_id=blog_id).to_detail_json
to
post = Blog.objects.get(post_id=1).to_detail_json
then I get the correct answer.
In case this is required, here is my model
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}
Update
I modified BlogDetailView to return
return HttpResponse(json.dumps(self.kwargs),mimetype='application/json')
and he gives me
{ blog_id: "" }
Which makes me think that this is something with my urls.py file, but I don't see the error.