Django学习

    应用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['参数名']获取表单数据
 

未完待续。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值