django中的常用操作技巧

一个mtv 思想  model template  view

安装  pip3 install django

创建一个工程
 直接在一个命令行,不是在python的命令里
 django-admin startproject mysite

运行工程

python manage.py runserver  

访问  127.0.0.1:8000

加载一个app网页   在manage的同级目录  
 python manage.py startapp polls


django的路由
在mysite 的url的路径中直接加入   
# 这里相当就是路由
urlpatterns = [
    url(r'^polls/', include('polls.urls')),
    url(r'^admin/', admin.site.urls)
]
然后在app的项目文件里直接添加
urls 里设置就可以了

views  设置去哪找实现什么功能
def login(request):
    return HttpResponse('login')  # 返回一个字符串
rander_to_response('index.html',data) #返回的页面和跳转的路径
redirect(/app01/index/)  这里写的跳转的路径  路由的地址


链接数据库
先要创建一个数据库的名字  Django是不会自己创建数据库的
1.先在模型里写入表和字段  让框架知道你用的什么数据库
class UserInfo(models.Model):
    username = models.CharField(max_length=50)
    passwd = models.CharField(max_length=50)

2.在settings里配置数据mysql

DATABASES = {
    'default': {
        #'ENGINE': 'django.db.backends.sqlite3', 默认是这样
        #'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'day1',
        'USER': 'root',
        'PASSWORD': '',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
}

 


3.需要在 INSTALLED_APPS  里建立关联  'web',
4.执行两个命令
在主配置的  init文件里写上
import pymysql
pymysql.install_as_MySQLdb()

然后在命令端运行两个指令
python manage.py makemigrations   当有新的表建立连接的时候需要
python manage.py migrate

 
在__init__ 里加入
import pymysql
pymysql.install_as_MySQLdb()
 


然后manage.py 同级目录下运行两个命令
运行命令就生成表  要是修改了表也需要重新生成
python manage.py makemigrations
python manage.py migrate
这里注意一下  要是想在原来的表里在添加一条address
这里必须得写default 否则是不让添加的
address = models.CharField(max_length=50,default='')


这里说一下  django的模型字段

id = models.AutoField(primary_key=True)  默认就是这样

BooleanField  布尔值类型。默认值是None。

IntergerFiled   整数型

CharField   字符串类型。必须接收一个max_length参数。

TextFiled    可以存多个字符 longtext


CommaSeparatedIntegerField
逗号分隔的整数类型。必须接收一个max_length参数。
常用于表示较大的金额数目,例如1,000,000元

DateField
class DateField(auto_now=False, auto_now_add=False, **options)
日期类型。

auto_now:每当对象被保存时将字段设为当前日期,常用于保存最后修改时间。
注意,只有在使用save()方法时才更新,其它操作不更新。

auto_now_add:每当对象被创建时,设为当前日期,常用于保存创建日期。
注意,它是不可修改的。

EmailField
class EmailField(max_length=254, **options)
邮箱类型。

unique:true时,在整个表内该字段的数据不可重复。

primary_key:主键。设置为True时,当前字段变为主键,并关闭Django自动生成的id主键功能。另外,主键字段不可修改,如果你赋个新值则会创建个新记录。

from django.db import models
class Fruit(models.Model):
name = models.CharField(max_length=100, primary_key=True)

FileField
class FileField(upload_to=None, max_length=100, **options)
上传文件类型

表之间的一对多

class UserType(models.Model):
    name = models.CharField(max_length=50)


class UserInfo(models.Model):
    username = models.CharField(max_length=50)
    password = models.CharField(max_length=50)
    address = models.CharField(max_length=50, default='')
    age = models.IntegerField(default='18')
    memo = models.TextField(default='信息')
    createDate = models.DateTimeField(default='2016-12-12 12:12')

 



    # 两个表建立外键表关联索引 1对多
    typeId = models.ForeignKey('UserType')
两个表直接没有办法多对多  所以需要第三个表
user       group            user_group  
id name       id   groupname     nid    groupid  userid        
1    A      1     ceo        1       1       1    
2    B        2     eco         1       2       1
3    C


视图加载新的写法
from . import views

在模板的渲染里面导入包要这样使用     
url(r'^add/(?P<name>\d*)/$', views.Add),




原生的sql语句一对多建立外链接
create table banji(
   id int auto_increment primary key,
   banjihao varchar(10) unique key,/*唯一的班级名字*/
   banzhuren  varchar(10)  comment '班主任',
   open_date date comment '开班日期'
);
#写第二个表
create table b_xuesheng(
    s_id int auto_increment primary key,
    name varchar(10),
    age tinyint,
    banji_id int comment'班级id',
    foreign key (banji_id) references banji(id)/*这个id就对应着上面班级的id*/
);



访问html路径需要导入  render 这个包
from django.shortcuts import render

添加静态的文件需要设置 seeting里的templates DIRS
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
                os.path.join(BASE_DIR,'public')   #基础的路径加上现在静态模板的路径

        ],



django
orm   对象 关系 映射

数据库的表和实体一一对应


对数据库的增删查改

1.先要在view里倒入模型里定义的方法




 创建管理员用户

首先,通过下面的命令,创建一个可以登录admin站点的用户:
$ python manage.py createsuperuser
输入用户名:
Username: admin
输入邮箱地址:
Email address: admin@example.com
输入密码:
Password: **********
Password (again): *********
Superuser created successfully.

注意:Django1.10版本后,超级用户的密码强制要求具备一定的复杂性,不能再偷懒了。


bolg  后台账号 admin  登陆密码   python123
不管是一对一还是一对多都是跨表操作  

跨表查询用__ 两个下划线   垮表取用 .

数据的获取 all,get(获取一个) filter(获取过滤的数据)



posted @ 2017-05-03 19:01  严恩娜  阅读(1164)  评论(0编辑  收藏  举报