python框架django入门_Django入门 -- 框架操作基本流程

-- 入门# Django开发流程:

# 1.创建虚拟环境;

# 2.安装django;

# 3.创建项目;

# 4.创建应用;

# 5.在models.py中定义模型类,为视图提供数据;

# 6.定义视图,处理浏览器请求

# 7.配置URL

# 8.创建模板,呈现数据

-- 虚拟环境# 针对python不同项目,而对应安装的一堆包的集合;

-- ubuntu中安装虚拟环境的命令(安装两个虚拟环境包,第二个是简易化操作)

sudo pip install virtualenv

sudo pip install virtualenvwrapper

-- 创建虚拟环境

mkvirtualenv 环境名称

mkvirtualenv py_django

-- 查看与使用虚拟环境

workon 两次tab键

workon py_django

-- 删除虚拟环境

rmvirtualenv 虚拟环境名称

先退出:deactivate

再删除:rmvirtualenv py_django

# 在创建虚拟环境过程中,在home目录下的.virtualenvs文件下,

# 会生成刚创建的虚拟环境,而且过程中系统会默认生成多个包,

# 以及将usr/bin/文件下的python文件复制到这个虚拟环境包里

# 的/bin文件下;

-- 查看当前所有的包

pip list 或者pip freeze

# 或者:~/.virtualenvs/py_django/lib/python2.7/site-packages下

# 查看所有的包

-- 虚拟环境下安装包

pip install 包名称

安装django1.8.2的包

pip install django==1.8.2

-- 创建项目(图书,英雄,一对多的关系)# 在Desktop下创建,不会出现权限问题;

django-admin startproject 项目名称

--tree

-- manage.py 是项目运行入口,指定配置文件路径;

-- test1 包含项目的配置文件;

-- __init__表示这个目录当作包使用;

-- settings.py 是整体配置文件;

-- urls.py 是URL配置文件;

-- wsgi.py 是与WSGI兼容的web服务器入口;

-- 创建应用python manage.py startapp booktest(应用名称)

-- booktest

-- admin.py

--__init__.py

-- migrations

-- __init__.py

-- models.py # 不许要手动到数据库中操作,直接在这个文件汇总添加类;

-- tests.py

-- 添加/安装应用在test1/settings.py中INSTALLED_APPS下添加应用名称就可以安装;

'bootest';

# 开启服务器(同时生成一个sql数据库)

# python manage.py runserver ip:端口

# 1.ip可以不写;

# 2.默认端口为8000

-- 模型设计

-- 创建模型类-- ORM框架 将python的对象转换成数据库中sql的操作;

# 通过自定义模型类和对象,完成对数据库的操作

-- 在manage.py中设置环境变量,用settings控制管理整个项目;(默认已经设置)

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "test1.settings")

-- models.py

# 定义类时,需要继承models.Model类;

# class BookInfo(models.Model):

btitle = models.CharField(max_length=20) # 设置字符长度;

bpubdate = models.DateField() # 设置日期格式;

# class HeroInfo(models.Model):

hname = models.CharField(max_length=20)

hcontent = models.CharField(max_length=100)

hgender = models.BooleanField(default=True) # 设置布尔类型;

hbook = models.ForeignKey(BookInfo) # 设置外键对象;

-- 查看迁移文件对应的sql语句

python manage.py sqlmigrate news 0001

-- 生成迁移文件(相当于生成sql语句,以及执行)

# 根据模型类与属性,确定表结构,生成文件;

# 执行迁移;

生成:python manage.py makemigrations(执行sql语句)

# 会在migrations文件下,0001_initial.py的文件,__init__.py

# 里面是类似于sql语句的代码;

执行:python manage.py migrate(创建表结构)

# 生成__init__.pyc文件

-- 使用模型类-- 进入项目的shell,进行简单的API操作

python manage.py shell

# 在模块中引入类对象,再进行操作;

from booktest.models import BookInfo

-- 在shell下对数据进行增删改查(忽略)

BookInfo.objects.all() # 查询所有;

# 创建对象

b=BookInfo()

b.title='射雕英雄传'

from datetime import date

b.pub_date=date(2017,1,1)

b.save() # 保存数据;

# 创建/获取指定对象

b=BookInfo.objects.get(id=1)

b.title='神雕侠侣'

b.save()

...

-- 后台管理(CMS内容管理系统)-- 创建管理员

-- 注册用户

python manage.py createsuperuser

# 用户名默认:python;密码:chuanzhi

-- 进入后台管理页面

# 修改界面语言(默认英文)

settings.py文件中修改成 LANGUAGE = 'zh-Hans';TIME_ZONE = 'Asia/Shanghai'

# 在.virtualenvs/py_django/lib/python2.7/site-packages/django/contrib/admin/locale/文件下

-- 启动服务器,浏览

python manage.py runserver

http://127.0.0.1:8000/admin

-- 注册 admin.py(注册模型类,将model.py创建的类引入后台)

引入模型类

from models import *

admin.site.register(BookInfo)

admin.site.register(HeroInfo)

# str方法中,使用了中文,需要在models中str方法下的属性encode("utf-8")

-- 支持自定义(在后台显示所有属性,继承admin.ModelAdmin类)

class BookInfoAdmin(admin.ModelAdmin):

list_display = ['id', 'title', 'pub_date']

class HeroInfoAdmin(admin.ModelAdmin):

list_display = ['id', 'name', 'content', 'gender', 'book']

# 将添加属性的类添加到注册中;

admin.site.register(BookInfo, BookInfoAdmin)

--视图

-- 定义视图函数(接受request,返回HttpResponse)

# view

# 本质就是一个函数;

# 封装所有信息;

from django.http import HttpResponse

# 必须传入HttpRquest对象的request,返回HttpResonse对象;

def index(request):

return HttpResponse('hello world')

-- 配置URLconf(找到对应视图函数)

# 找到视图的过程:

# 用户在浏览器输入url地址,请求访问网站后,服务器后台接受到信息,

# 然后与写好的URLconf逐一匹配,如果匹配到就调用;没有就返回404错误;

-- URLconf 编写规则

1.使用正则表达式定义;

2.使用view.py中定义的视图

-- URLconf 配置过程

1.在自己创建的应用(booktest)中创建urls.py文件,配置URLconf,定义;

from django.conf.urls import url

from . import views

urlpatterns = [url(r'^$', view.index),] # view.index调用视图模块中定义的index函数;

2.在项目中的url.py,链接到应用的URLconf中;

url(r'^', include('booktest.urls')),

# 其完整代码

from django.conf.urls import include, url

from django.contreib import admin

urlpatterns = [

url(r'^admin/', include(admin.site.urls))

url(r'^', include('booktest.urls')),

]

# 请求访问:127.0.0.1:8000

-- 模板# 在Django中,将前端内容定义在模板中,再把模板交给视图调用;

-- 创建模板

# 在项目目录下创建模板文件夹templates,并在其中创建与应用

# 同名的文件存放模板文件;

-- 视图中寻找模板

-- 在settings.py中做设置,为了找到templates模板文件位置

'DIRS':[os.path.join(BASE_DIR, 'templates')], # 拼接templates文件夹所在位置;

-- 在views.py中加载渲染模板

def index(request):

cag = NewsCategory.objects.get(pk=1) # pk(primary key)相当于Id

data = {'cag': cag.cag_name}

tpl = loader.get_template('index.html')

new_tpl = tpl.render(data)

return HttpResponse(new_tpl)

# 简写成一下操作:

def index(request):

return render(request, 'booktest/index.html')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值