一、Bobby django在线教育平台
第三课 留言功能开发
1.将app放到apps下面
导入的时候需要使用
1 | from apps.message import views |
最好在settings中配置apps目录当作根搜索路径。
2.django 多条件搜索(name and address)
all_messages = UserMessage.objects.filter(name="boddy", address="北京")
3.为什么要用URL别名?
在模板中也使用url别名,以后url地址可以随便改,而模板中不用改。
url(r'^from')
有可能匹配到/formtest,所以最好加一个$。
二、马哥视频
1.新建项目
如果你已经有一个目录了,比如blogproject,使用
1 | python startproject blog . |
则可以将blogproject作为项目目录,直接在下面建立一个blog文件。
不会建立一个blog项目文件 ,里面又有一个blog文件夹。
2.
一对多时,自动创建会增加_id后缀。
从一访问多,使用对象.小写模型类_set
从一访问一,使用对象.小写模型类
3.
django 可以 return jsonResponse([¨user¨:¨kevin¨]),前端可以看到response数据。
4.
django开发时,可以使用postman测试post数据,而不用设计前端表单。
1 | from django.http import JsonResponse, HttpResponse, HttpRequest |
2 |
3 | import json |
4 |
5 | def req(request,HtteResponse): |
6 | payload = json.loads(request.body.decode()) |
7 | email = payload[¨email¨] |
8 | print (payload) |
9 | return HttpResponse (¨Welcome to my site¨) |
5. filter(pk=xx)
这里pk是主键,不用担心 主键的名字。
qs = User.objects.filter().first(() #取第一个
user=User.objects.filter(email=email).get()
get()仅返回单个满足条件的对像,如果未能返回对像则抛出DoesNotExist异常,如果能返回多条,抛出MultipleObjectsReturned
user=User.objects.filter(id_gt=3) #great than
user=User.objects.filter(id_lt=3) #less than
参考:https://www.bilibili.com/video/av33618159/?p=4
三、slug
字段:
1 | slug = models.SlugField(max_length=80, null=True, blank=True, verbose_name= '(URL)别名' ) |
2 |
3 | #定义save方法 |
4 | def save(self, *args, **kwargs): |
5 | if not self.slug: |
6 | self.slug = slugify(self.title) |
7 | super(Question, self).save(*args, **kwargs) |
这样当没有设定slug的时候,就自动以标题作为slug,而且也支持汉字:
比如汉字的slug:
权重相当,对方网站几万收录
#quan-zhong-xiang-dang-dui-fang-wang-zhan-ji-mo-shou-lu
四、存在则更新,不存在就创建
models.UserToken.objects.updater_or_create(user=obj,defaults=('token':token))
五、根据数据库生成models
注意:novel是app的名称。
1 | python manage.py inspectdb > novel/models.py |
参考:
https://www.bilibili.com/video/BV1cW411i7fj?from=search&seid=13100451082786372678 73分钟左右。
六、随机查询
1 | novelcopy = NovelCopy.objects.filter().order_by( '?' )[:6] |
七、爬小说
1 | for url, shuming in zip(data1,data2): |
2 | print (url,shuming) |
3 | if os.path.exists(shuming) == False: |
4 | os. mkdir (shuming) |
5 | |
https://www.bilibili.com/video/BV1eb411M7ZT?from=search&seid=3295283783267063846