应用blog
1、migrations 文件夹: 数据移植(迁移)模块
2、admin.py : 该应用的后台管理系统配置,Django特点
3、apps.py : 该应用的一些配置 Django1.9以后才生成的
4、models.py : 数据模块,使用ORM框架,类似MVC结构中的Models(模型)
5、test.py : 自动化测试模块,Django提供了自动化测试功能,在这里编写测试脚本(语句)
6、views.py : 执行响应的代码所在模块,代码逻辑处理的主要地点,项目中大部分代码均在这编写
创建第一个页面(响应)
1、编写blog.views
from django.http import HttpResponse
# Create your views here.
def index(request):
return HttpResponse('Hello,world!')
2、在主入口的urls.py编写
import blog.views as bv
path('index/', bv.index),
注意1、主配置文件settings.py里INSTALLED_APPS里面要配置应用的名称'blog';
2、主配置文件里需时DEBUG = True ALLOWED_HOSTS = [] #ALLOWED_HOSTS = ['localhost']
3、启动服务cmd里到目标路径:python manage.py runserver
4、浏览器中输入http://127.0.0.1:8000/index/,即可看到页面的hello,world
改进:使用总配置文件中使用include方式,有两种书写方式一种时通过url,另一种是通过path
第一种:1、总配置文件:from django.conf.urls import url,include
urlpatterns里面:url(r'index/',inlude(''blog.urls))
2、在应用blog里新建一个urls.py:
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.index), #如果不写'^$',浏览器输入时后面的可以任意输入都可以打开helloworld
]
第二种:1、将配置文件改成:from django.urls import,path
path('index/', include('blog.urls')),
2、from django.urls import path
from . import views
urlpatterns = [
path('', views.index),
]
两种的区别时url的能用正则表达式!!!还需继续了解
Templates:
HTML文件
使用了Django模板语言(Django Template Language,DTL)
可以使用第三方模板(如Jinja2)
开发第一个Template
步骤
1、在app的根目录下创建名为Templates的目录(blog目录)
2、在该目录下创建HTML文件
3、在views.py中返回render()
DTL初步使用:
1、render()函数中支持 一个dic类型参数
2、该字典是后台传递模板的参数,键位参数名
3、在模板中使用{{参数名}}来直接使用
(1、应用blog中的view.py:
def index(request):
return render(request,'index.html',{'hello':'hello,Blog'})
2、Templates文件夹下的index.html文件下改成 <h1>{{hello}}</h1>
即可)
解决Templates冲突的方案:
1、在APP的Templates目录下创建以APP名的为名称的目录
2、将html文件放入新创建的目录下
Models介绍:
Django中的Models是什么:
通常,一个Model对应的数据库的一张数据表
Django中Models以类的形式表现
它包含了一些基本的字段以及数据的一些行为
ORM:
对象关系映射(Object Relation Mapping)
实现了对象和数据库之间的映射
隐藏了数据访问的细节,不需要编写SQL语句
编写Models
1、在应用的根目录下创建models.py,并引入modeles模块(创建应用时自动生成)
2、创建类,继承models.Model,该类即是一张数据表
3、在类中创建字段
字段创建:字段即类里面的属性(变量)
attr = models.CharField(max_length=64)
生成数据表
1、命令行中进入manage.py同级目录
2、执行python manage.py makemigrations app名(可选,不选的话默认是该项目下所有应用)(制作数据迁移)
3、再执行python manage.py migrate(数据迁移动作)
查看:
Django会自动再app/migrations/目录下生成移植文件
执行python manage.py sqlmigrate 应用名 文件id 查看SQL语句
默认sqlite3的数据库在项目根目录下db.sqlite3
查看并编辑db.sqlite3
使用第三方软件
SQLite Expert Personal
轻量级 免费
页面呈现数据:
后台步骤:
views.py中import models
article = models.Article.object.get(pk=1) ##获取模型对象的实例
render(request,page,{'article':article}) ##传输到前端 page是html
前端步骤
1、模板可直接使用对象以及对象的"."操作
2、{{article.title}}
{{article.content}}
Admin简介
Admin是Django自带的一个功能强大的自动化数据管理揭秘那
被授权的用户可直接在Admin中管理数据库
Django提供了许多针对Admin的定制功能
配置Admin
1、创建用户
python manage.py createsuperuser 创建超级用户
localhost:8000/admin Admin入口
配置应用
1、在应用下admin.py中引入自身的models模块(或者里面的模型类)
2、编辑admin.py:admin.site.register(models.Article)
修改数据库默认显示名称(http://127.0.0.1:8000/admin/)
在Article类下添加一个方法
根据python版本(3、2)选择__str__(self)或者__unicode__(self) ()
return self.title
博客主页面
主页面内容
文章标题列表,超链接
发表博客按钮(超链接)
列表编写思路
取出数据库里所有的文章对象
将文章对象们打包成列表,传递到前端
前端页面把文章以标题超链接的形式逐个列出
模板For循环
{% for xx in xxs %}
HTML语句
{% endfor %}
页面内容:
标题
文章内容
修改文章按钮(超链接)
URL传递参数
参数写在响应函数中request后,可以有默认值
URL正则表达式:(Django 2+) re_path('^article/(?P<article_id>[0-9]+)$',views.article_page),
URL正则中组名必须和参数名一致
Django中的超链接
超链接目标地址:
href 后面是目标地址
template中可以用"{% url 'app_name:url_name' param %}"
其中app_name和url_name都是在url中配置
在配置URL
url函数的名称参数
根url,写在include()的第一个参数位置,namespace= 'blog'
应用下则写在url()的第三个参数位置,name = 'article'
编辑响应函数
使用request.POST['参数名']获取表单数据
未完待续。。。