Django笔记--002基本应用结构
1.数据与模板 数据->模型model--------处理方法views-------->模板template
2.制造数据库迁移: makemigrations 迁移:migrate
3.创建模型(Article)后在admin.py中注册
admin site register(Article)
4.objects 模型的objects是获取或操作模型的对象(Article)
QuerySet(查询结果集对象):从数据库中查询出来的结果一般为一个集合,叫QuerySet,也就是服务器上的url里面查询内容。
Article.objects.get(条件) 返回Model对象,类型为列表。执行SQL语句获取数据。
Article.objects.all() 返回QuerySet对象,支持迭代,可用for循环获取数据,并没有在数据库中执行SQL查询。
Article.objects.filter(条件)
5.网页为myblog/1..3,档输入超过3时返回Http404。
1 def article_detail(request,article_id): 2 try: 3 article=Article.objects.get(id=article_id) #从models get (id=article_id)数据 4 except Article.DoesNotExist: 5 raise Http404('没有网页了') 6 return HttpResponse('<h3>文章标题: %s </h3> <br>文章内容:%s' % (article.title,article.content))
#修改1次后:
1 def article_detail(request,article_id):
2 try: 3 article=Article.objects.get(id=article_id) #从models get (id=article_id)数据
4 context={} #建立一个字典 用于接受get到的数据
5 context['article_obj']=article # 将get数据赋值给字典键‘article_obj’
6 # return render(request,'article_detail.html',context) #返回模板及数据 响应给浏览器
7 return render_to_response('article_detail.html',context) #返回模板及数据 响应给浏览器
8 except Article.DoesNotExist: 5 return Http404('没有网页了')
#修改2次后:
1 def article_list(request):
2 articles=Article。object.all() #从models 获取全部数据,如果没有自动转到.
3 context={} #建立一个字典 用于接受get到的数据
4 context['articles']=articles # 将数据赋值给字典键‘article_obj’
5 return render_to_response('article_list.html',context) #返回模板及数据 响应给浏览器
*处理流程 浏览器发送url信息-->urls.py分配给views.py处理-->views.py得到request请求,从models.py get到数据,进行处理。然后return HttpResponse(‘网页模板’,内容)-->浏览器。
在每个app中建立urls.py文件写入path,在总urls文件中引入include模块,写入到APP的总路径。
如:from django.urls import path,include -->path('myblog/',include('myblog.urls')),
6.使用模版 前端页面和后端代码分离 减低耦合性。
使用{{ }}将views.py处理结果引入template模板。如:<h3>{{article_obj.title}}</h3> <p> {{article_obj.content}} </p>
使用{% %} 迭代views.py处理结果呈现到template模板。
如:{% for article in articles %}
<a href="/myblog/{{article.pk}}"> {{article.title}} </a><br>
<a href="{% url 'article_detail' article.pk %}"> {{article.title}} </a><br> 使用urls中的path名称。
{% endfor %}