django项目创建步骤

 

环境:Python3.7  编辑器:pycharm

1.创建项目

cmd命令行输入以下命令创建项目:

django-admin startproject 【项目名】

 项目目录结构:

  manage.py        与项目进行交互的命令行工具集的入口,项目管理器。Python manage.py runserver启动服务器

  【项目名】        项目的一个容器,包含项目最基本的配置,目录名一般不建议修改

    _init_.py        Python中声明模块的文件,内容默认为空

    settings.py      项目的总配置文件,里面包含了数据库、Web应用、时间等各种配置

    urls.py        url配置文件,Django项目中所有地址(页面)都需要我们自己去配置其URL

    wsgi.py        WSGI(Python Web Server Gateway Interface)Python服务器网关接口,Python应用与Web服务器之间的接口

2创建应用

1打开命令行,进入项目中manage.py同级目录,输入:

python manage.py startapp 【应用名】

 2添加【应用名】到settings.py中的INSTALLED_APPS里。(应用名不可与Python模块名相同)

应用目录结构:

  migrations        数据移植(迁移)模块,自动生成

    _init.py_

  _init.py_

  admin.py        该应用的后台管理系统配置

  apps.py          该应用的一些配置,Django1.9以后自动生成

  models.py         数据模块,使用ORM框架,类似MVC结构中的Models(模型)

  tests.py          自动化测试模块,Django提供了自动化测试功能,在这里编写脚本(语句)

  views.py        执行响应的代码所在模块,代码逻辑处理的主要地点,项目中大部分代码均在这里编写

 3创建网页(响应)

第一种配置方法:

 【项目名】.views

from django.shortcuts import render
from django.http import HttpResponse

def 【函数名1】(request):
    return HttpResponse('hello,world')
  • 每个响应对应一个函数,函数必须返回一个响应。
  • 函数必须存在一个参数,一般约定为request
  • 每一个响应(函数)对应一个URL

【项目名】.urls

import 【项目名】.views as bv

urlpatterns = [
    ……
    url(r'^index/',bv.【函数名1】),
]
  • 每个URL都以url的形式写出来
  • url函数放在urlpatterns列表中
  • url函数的三个参数:URL(正则)、对应方式、名称

访问路径127.0.0.1:8080/index/【函数名1】

第二种配置方法:

【项目名】.urls

import django.conf.urls import url,include

urlpatterns = [
    ……
    url(r'^【路径1】/',include('【项目名】.urls')),
]

应用目录下创建urls.py

import views

urlpatterns = [
    url(r'^【路径2】/',views.【函数名1】),
]

  访问路径:127.0.0.1:8080/【路径1】/【路径2】/

  •  在根urls.py中引入include
  • 在APP目录下创建urls.py文件,格式与根urls.py相同
  • 根urls.py中url函数第二个参数改为include(‘【项目名】.urls’)

注意事项:

  • 根urls.py针对APP配置的URL名称,是该APP所有URL的总路径
  • 配置URL时注意正则表达式结尾符号/$

 Templates介绍

  •  html文件
  • 使用了Django模板语言(Django Template Language,DTL)
  • 可以使用第三方模板(如jinja2)

 步骤:

  1. 在APP根目录下创建名为Templates的目录
  2. 在该目录下创建html文件
  3. 在views.py中返回render()
from django.shortcuts import render

def 【函数名】(request):
    return render(request,'xxx.html',{'a':'a1'})

xxx.html

……
<body>
{{a}}
</body>
……

  

DTL初步使用

  • render()函数中支持一个dict类型参数
  • 该字典是后台传递到模板的参数,键为参数名
  • 坐在模板中使用{{参数名}}来直接使用

 

  Django查找Template

  •   Django按照INSTALLED_APPS中的添加顺序查找Templates
  •   不同APP下Templates目录的同名html文件会造成冲突

   解决冲突方案:

    在app的Templates目录下创建以APP名为名称的目录,将html文件放入新创建的目录下

from django.shortcuts import render

def 【函数名2】(request):
    return render(request,'【应用名】/xxx.html',{'a':'a1'})

 models介绍

  • Django中的models是什么?
  • 通常一个models对应数据库的一张数据表
  • Django中的models以类的形式表现
  • 它包含了一些基本字段以及数据的一些行为

ORM对象关系映射(Object Relation Mapping),实现了对象和数据库之间的映射,隐藏了数据访问的细节,不需要编写sql语句

步骤:

  1. 在应用根目录下创建models.py,并引入models模块
  2. 创建类,继承models.Model,该类即是一张数据表
  3. 在类中创建字段

models.py

from django.db import models

class 【类名】(models.Model):
   attr=models.CharFiled(max_length=64)
  ……

生成数据表

步骤:

  1. 连接已存在数据库,
  2. 设置setting中database的信息,

  3. terminal下输入python manage.py inspectdb反向生成models,

  4. 将改动应用到数据库表models,

  5. terminal下输入python manage.py makemigrations

  6. terminal下输入python manage.py migrate

查看

  • Django会自动在app/migrations/目录下生成移植文件
  • 执行python manage.py sqlmigrate 应用名 文件id 查看SQL语句

连接mysql数据库:【项目名】/_init_.py

import pymysql
pymysql.install_as_MySQLdb()

呈现页面数据

views.py

import models

def 【函数名2】(request):
  【对象】=models.【类名】.object。get(pk=1) return render(request,'【应用名】/xxx.html',{'【对象】':【对象】})

xxx.html

……
<body>
{{【对象】.属性}}
</body>
……

 admin简介

admin是Django自带的一个功能强大的自动化数据管理界面,被授权的用户可直接在admin中管理数据库,Django提供许多针对admin的定制功能

配置admin

创建超级用户

pyhton manage.py createsuperuser

然后输入用户名和密码

访问路径  127.0.0.1:8080/admin/

修改settings.py中的LANGUAGE_CODE=‘zh_Hans’  改为中文

 配置应用

 在应用下admin.py中引入自身的models模块(或里面的模型类)

 admin.py

from django.contrib import admin
from models import【类名】

admin.site.register(【类名】)

 修改数据默认显示名称

 步骤:

在【类名】类下添加一个方法_str_(self):return self.【属性】

额外知识:

 URL传递参数:r'^/【路径】/(?p<参数名>[0-9]+)/$'  

 超链接目标地址"{%url 'app_name:url_name' param %}"

 其中app_name和url_name都在url配置

url函数的名称参数

  • 根urls,写在include()的第二个参数位置,namespace=‘app_name’
  • 应用下写在url()的第三参数位置,name=‘url_name’

 

posted @ 2019-12-10 19:39  苏道羲  阅读(394)  评论(0)    收藏  举报