django简单学习

django基础学习总结:

1、django是一款mvc的框架,c层主要接受用户输入的部分有框架处理,它更关注M(models)
T(template)v(view)既MVT
template层创建在和项目容器同一层 里边创建html文件
M:数据 数据存取 验证
T:数据表现
v:业务逻辑
一、项目project中
manage.py:控制脚本,用于启动,配置
setting.py:配置文件(如数据库,路径,访问ip等)
urls.py:url与视图对应文件
二、app(相当于一个单独的逻辑模块)
创建命令:python manage.py startapp 名称
views.py 用于定义视图函数
models.py:数据库文件 用于定义数据表
连接数据库:
1、在创建的app1下的models.py中创建
from future import unicode_literals
from django.db import models
class Test(models.Model):
name = models.CharField(max_length=20)
以上的类名代表了数据库表名,且继承了models.Model,类里面的字段代表数据表中的字段(name),数据类型则由CharField(相当于varchar)、DateField(相当于datetime), max_length 参数限定长度。
接下来在settings.py中找到INSTALLED_APPS这一项,如下

INSTALLED_APPS = (
‘django.contrib.admin’,
‘django.contrib.auth’,
‘django.contrib.contenttypes’,
‘django.contrib.sessions’,
‘django.contrib.messages’,
‘django.contrib.staticfiles’,
‘app1’, # 添加此项(创建的app名称叫啥 填啥)
)
python manage.py migrate # 创建表结构
数据库配置:
DATABASES = {
‘default’: {
‘ENGINE’: ‘django.db.backends.mysql’, #mysql数据库关联配置
‘NAME’: ‘test’, #数据库名
‘USER’: ‘root’, #账号
‘PASSWORD’: ‘123456’, #密码
‘HOST’:‘120.79.9.29’, #ip
‘PORT’:‘3306’, #端口
‘DEFAULT_CHARSET’:‘utf-8’ #字符编码
}
}

若出现Traceback (most recent call last):
File “manage.py”, line 22, in
execute_from_command_line(sys.argv)

在__init__中添加:
import pymysql as pymysql

pymysql.install_as_MySQLdb()
若出现ImportError: No module named TestModel
说明model写创建写错了 一定按照步骤写
$ python manage.py makemigrations TestModel # 让 Django 知道我们在我们的模型有一些变更
$ python manage.py migrate TestModel # 创建表结构

1、添加字段再次执行命令:
python manage.py makemigrations
python manage.py migrate

2、添加数据时报错:ImportError: cannot import name view(无法导入视图文件)
结果为url规则没有对应上,自己总结简单规则:
引入时为from A import B
A为项目名或模型名 B为视图名
url(r’^hello’, view.hello),

url引入视图可在一起 如 from . import A.py,B.py,C.py
url规则 函数 A.py 函数
url(r’^hello ′ , v i e w . h e l l o ) , u r l ( r ′ t e s t d b ', view.hello), url(r'^testdb ,view.hello),url(rtestdb’, testdb.testdb),
url(r’^C’,B.C)
C为函数名
1、数据添加:
test1 = Test(name=‘runoob’,age = ‘10’) Test为模型名
test1.save()
2、数据查询 :
使用objects模型管理工具中的all()查询所有数据,类似 sql中的select * from
data = Test.objects.all();
for循环:
for v in data:
v.name
v.age

3、数据修改:
一、test1 = Test.objects.get(id=1)
test1.name = ‘python’
test1.save();
return HttpResponse(“

修改成功

”):一定要有返回值
二、 #另外一种
#Test.objects.filter(id=1).update(name=‘python’)
4、数据删除:
test1 = Test.objects.get(id=2)
test1.delete()
#另外一种
#Test.objects.filter(id=2).delete()
#删除所有
#Test.objects.all().delete()

创建项目: Python django-admin.py startproject student_project
若创建失败 找到绝对路径
/usr/lib/python2.7/site-packages/django/bin/django-admin.py startapp app1

启动django:python manage.py runserver 0.0.0.0:8000

若报错:You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run ‘python manage.py migrate’ to apply them.

执行命令:python manage.py migrate
使用服务器访问
在setting.py中找到:ALLOWED_HOSTS=[] 修改为 ALLOWED_HOSTS=[’’] // ''表示任意地址
或在其中添加需要的IP地址即可
运行django:python manage.py runserver 0.0.0.0:8000

简单实践:
view层:引入HttpResponse Python的三大神器:from django.shortcuts import HttpResponse, render, redirect
1、内部引入一个内部参数
2、可接收三个参数,一是request参数,二是待渲染的html模板文件,三是保存具体数据的字典参数。
3、接受一个URL参数,表示让浏览器跳转去指定的URL.

代码书写一定要按照规范
1、相同级缩进4个空格
2、代码必须使用utf-8编码

1、django表单展示:
在根目录mysite下(或app模块下)创建templates用于存放html文件
创建完成后要在setting.py中添加:
‘DIRS’: [os.path.join(BASE_DIR, ‘myapp/Templates’)],
注意:其中BASE_DIR指项目的db.sqlite3所在的目录,后面是模板目录相对db.sqlite3的路径
不添加会报错:TemplateDoesNotExist
2、在project中创建search.py:
定时视图函数,和接收请求函数
3、定义对应的url路由(视图与请求都需要)
4、访问时根据url中定义的路由名字访问
5、切记字符编码一定要设置为 utf-8
一、在setting.py中添加:
DEFAULT_CHARSET=‘utf-8’
二、若接受请求时编码错误 则引入 :import sys
添加代码:
if sys.getdefaultencoding() != ‘utf-8’:
reload(sys)
sys.setdefaultencoding(‘utf-8’)

django后台admin操作:
一、Django 提供了基于 web 的管理工具。
Django 自动管理工具是 django.contrib 的一部分。你可以在项目的 settings.py 中的 INSTALLED_APPS
如图:

在urls.py中有相应配置,去掉注释即可:from django.contrib import admin
添加url路由:url(r’^admin/’, admin.site.urls),
出现登录窗口后 使用命令:
python manage.py createsuperuser
设置用户名密码 root
输入邮箱:XXXXXXXXXXX@qq.com
设置密码 :XXXXXXXXXXXXX
确认密码:XXXXXXXXXXXXX
就可以登录了
二、在admin中同步数据表
在项目的 admin.py中添加代码:引入模块model
from TestModel.models import Test
admin.site.register(Test)
到此 之前创建的数据表和数据都能在admin中查看

数据库中已存在的数据表如何在django中使用:
1、在根目录运行代码:python manage.py inspectdb
出现如图:

复制出现需要使用的代码到对应的模块中(app)的models.py中
具体在哪里使用,在哪里引入对应的模块模型即可
django框架的各类引用:
from future import unicode_literals
from django.db import models
from django.utils import timezone
from django.test import TestCase
import datetime
from django.conf.urls import url,include
from django.contrib import admin
from . import view, testdb, search,search2
from future import unicode_literals
from django.template import loader
from django.shortcuts import render
from django.http import HttpResponse,HttpResponseRedirect
from django.db.models import *
from app1.models import *
from django.urls import reverse
from django.views import generic
django中自定义异常类:
django中session的用法:https://blog.csdn.net/weixin_34247155/article/details/92255397
中间件定义:https://jingyan.baidu.com/article/73c3ce285a7125e50243d969.html
https://www.jianshu.com/p/0bb133e89ade

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值