博文相关接口
功能分析
创建博文应用
模型
#在post/models.py中 from django.db import models from user.models import User # Create your models here. class Post(models.Model): class Meta: db_table = 'post' id = models.AutoField(primary_key=True) title = models.CharField(max_length=256,null=False) postdate = models.DateTimeField(null=False) author = models.ForeignKey(User)#指定外键,migrate会生成author_id字段 # self.content可以访问Content实例,其内容是self.content.content def __repr__(self): return '<Post {} {} {} {}>'.format( self.id,self.title,self.author,self.content #同上 self.id,self.title,self.author_id,self.content ) __str__ = __repr__ #MySQL 表的一对一、一对多、多对多问题参考:https://www.cnblogs.com/Camiluo/p/10615065.html class Content(models.Model): class Meta: db_table = 'content' #没有主键,会自动创建一个自增主键 post = models.OneToOneField(Post,to_field=id)#一对一,这边会有一个外键引用post中的主键id,可省略不写 content = models.TextField(null=False) def __repr__(self): return '<Content {} {}>'.format(self.post.id,self.content[:20]) __str__ = __repr__
路由
全局设置
#在blog/urls.py中 from django.conf.urls import include urlpatterns = [ url(r'^$', admin.site.urls), url(r'^admin/', admin.site.urls), url(r'^index/',index), # url(r'^testfor/',testfor), url(r'^user/',include('user.urls'))#多级路由 url(r'^post/',include('post.urls'))#多级路由 ]
#post/urls.py from django.conf.urls import url from .views import pub,get,getall#,testMiddle urlpatterns = [ url(r'^pub',pub), url(r'^(\d+)$',get),#给get传入一个参数str类型 url(r'^$',getall), ]
pub接口实现
扫描二维码关注公众号,回复:
7131495 查看本文章
#post/urls.py from django.http import HttpRequest,HttpResponse,JsonResponse from django.http import HttpResponseBadRequest,HttpResponseNotFound from user.views import authenticate from user.models import User import simplejson import datetime from .models import Post,Content # Create your views here. @authenticate def pub(request:HttpRequest): post = Post() content = Content() try: payload = simplejson.loads(request.body) post.title = payload['title'] # post.author = User(id=request.user.id)#user是在验证身份的时候注入的 post.author = request.user #user是在验证身份的时候注入的 post.postdate = datetime.datetime.now( datetime.timezone(datetime.timedelta(hours=8)) ) post.save()#获取一个post id content.content = payload['content'] content.post = post# content.save() return JsonResponse({ 'post_id':post.id }) except Exception as e: print(e) return HttpResponseBadRequest()
get接口实现
待续。。。