一、Bobby django在线教育平台
第三课 留言功能开发
1.将app放到apps下面
导入的时候需要使用
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,使用
python startproject blog .
则可以将blogproject作为项目目录,直接在下面建立一个blog文件。
不会建立一个blog项目文件 ,里面又有一个blog文件夹。
2.
一对多时,自动创建会增加_id后缀。
从一访问多,使用对象.小写模型类_set
从一访问一,使用对象.小写模型类
3.
django 可以 return jsonResponse([¨user¨:¨kevin¨]),前端可以看到response数据。
4.
django开发时,可以使用postman测试post数据,而不用设计前端表单。
from django.http import JsonResponse, HttpResponse, HttpRequest import json def req(request,HtteResponse): payload = json.loads(request.body.decode()) email = payload[¨email¨] print(payload) 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
字段:
slug = models.SlugField(max_length=80, null=True, blank=True, verbose_name='(URL)别名') #定义save方法 def save(self, *args, **kwargs): if not self.slug: self.slug = slugify(self.title) 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的名称。
python manage.py inspectdb > novel/models.py
参考:
https://www.bilibili.com/video/BV1cW411i7fj?from=search&seid=13100451082786372678 73分钟左右。
六、随机查询
novelcopy = NovelCopy.objects.filter().order_by('?')[:6]
七、爬小说
for url, shuming in zip(data1,data2): print(url,shuming) if os.path.exists(shuming) == False: os.mkdir(shuming)
https://www.bilibili.com/video/BV1eb411M7ZT?from=search&seid=3295283783267063846