How to get URL parameter passed in CBJ django?

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.

+4
source share
2 answers

It turns out that

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

it should be

 url(r'(?P<blog_id>\d{1,})/$', BlogDetailView.as_view()) 
0
source

to try

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

Source: https://habr.com/ru/post/1489172/


All Articles