Django项目部署-01
1. 安装Python
下载链接:https://www.python.org/getit/
我这边下载的是3.6.5的版本的执行版本,安装过程中选择自动安装pip
2.安装django
pip install Django==1.11
3.创建项目
django-admin startproject project
4.创建一个应用
先进入到创建的项目目录下,然后执行
python manage.py startapp myApp
目录结构如下:
django默认使用的数据库为sqlite3数据库,如果需要使用mysql数据库需要修改settings.py文件
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'project20180504',
'USER':'root',
'PASSWORD':'root',
'HOST':'localhost',
'PORT':'',
}
}
ENGINE 表示数据库的引擎名称,
NAME 为数据库的名称
USER为数据库的用户名
PASSWORD为数据库用户名密码
HOST为IP
PORT为端口号 修改完毕后,需要用到mysql还需要在project\myApp\__init__.py文件中声名
import pymysql
pymysql.install_as_MySQLdb()
如果显示pymysql未安装,可以使用pip install pymsql安装 我这边安装pymysql时候报错提示需要升级pip到10.0.1
执行python -m pip install --upgrage pip 即可 。 创建数据:
修改myApp下的models.py文件
#coding=utf-8 from django.db import models # Create your models here. class Grades(models.Model):
gname=models.CharField(max_length=20)
gdate=models.DateTimeField()
ggilrnum=models.IntegerField()
gboynum=models.IntegerField()
isDelete=models.BooleanField(default=False)
def __str__(self):
return self.gname class Students(models.Model):
sname=models.CharField(max_length=20)
sgender=models.BooleanField(default=True)
sage=models.IntegerField()
scontend=models.CharField(max_length=20)
isDelete=models.BooleanField(default=False)
#关联外键
sgrade=models.ForeignKey("Grades")
def __str__(self):
return self.sname
定义了一个班级表,包含班级名称,创建日期,女生数目,男士数目,是否删除字段
定义了一个学生表,包含学生姓名,学生性别,学生年龄,学生介绍,是否删除,所属班级,其中所属班级关联外键 。
执行
python manage.py makemigrations
将会生成迁移数据,在project\myApp\migrations\0001_initial.py文件中会生成如下内容
# -*- coding: utf-8 -*-
# Generated by Django 1.11 on 2018-05-04 12:31
from __future__ import unicode_literals from django.db import migrations, models
import django.db.models.deletion class Migration(migrations.Migration): initial = True dependencies = [
] operations = [
migrations.CreateModel(
name='Grades',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('gname', models.CharField(max_length=20)),
('gdate', models.DateTimeField()),
('ggilrnum', models.IntegerField()),
('gboynum', models.IntegerField()),
('isDelete', models.BooleanField(default=False)),
],
),
migrations.CreateModel(
name='Students',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('sname', models.CharField(max_length=20)),
('sgender', models.BooleanField(default=True)),
('sage', models.IntegerField()),
('scontend', models.CharField(max_length=20)),
('isDelete', models.BooleanField(default=False)),
('sgrade', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='myApp.Grades')),
],
),
]
此时进入mysql中查看发现表依然不存在,此时需要执行
python manage.pu migrate
此时会自动将数据表创建完毕 ,但是此时的数据表中是没用内容的。
测试数据:
使用django手动向数据表中增、删、改、查数据
首先进入python的shell环境中
python manage.py shell
首先导入包
from myApp.models import Grades,Students
from django.utils import timezone
from datetime import *
执行Grades.objects.all() 命令可以查看Grades中对象,此时为空,那么我们给它创建对象
grade1=Grades()
然后给对象的属性赋值
grade1.gname="python04"
grade1.gdate=datetime(year=2018,month=5,day=5)
grade1.ggilrnum=10
grade1.gboynum=30
此时对象中已经有数据,但是查询数据表发现表中还是空的,那是因为还需要执行grade1.save()命令将数据保存进去 。
grade1.save()
此时新增一个数据已经完成,按照这个方法可以添加多个对象 。
查询数据:使用如下命令可以查询第一条数据
Grades.objects.get(pk=1)
数据表中默认都有个id字段,并且这个字段是自动递增的,pk=1表示第一条记录,如果取所有的,那么使用Grades.objects.all()命令
但是显示的数据并不是很好看,可以通过修改myApp下的models.py文件的__str__(self)方法来定义输出格式,上面我们已经定义只输出名称,也可以定义输出其他内容 。
修改数据:
grade1.gboynum=100
grade1.save()
修改男士数目为100,然后保存,会发现数据表中数据已经发生变化
删除数据:
grade1.delete() #物理删除
启动服务:
python manage.py runserver
创建超级用户
python manage.py createsuperuser
然后根据提示创建超级用户名密码。
创建完毕后登陆http://127.0.0.1:8000/admin 可以进入登陆界面
修改myApp下的admin.py文件:
#coding=utf-8
from django.contrib import admin # Register your models here. from .models import Grades,Students # class StudentsInfo() class GrandesAdmin(admin.ModelAdmin):
#列表属性
list_display = ['pk','gname','gdate','ggilrnum','gboynum','isDelete']
#过滤器
list_filter =['gname']
#按字段搜索
search_fields =['gname']
#分页
list_per_page =5 #添加,修改属性
#添加属性先后顺序
#fields = ['gname','ggilrnum','gboynum','gdate','isDelete']
fieldsets = [
("num",{"fields":['ggilrnum','gboynum']}),
("base",{"fields":['gname','gdate','isDelete']}),
] class StudentsAdmin(admin.ModelAdmin):
list_display = ['pk','sname','sgrade','sgender','sage','scontend','isDelete']
list_filter =['sname','sgrade']
search_fields =['sname']
list_per_page =10 fields = ['sname','sgrade','sgender','sage','scontend',]
#注册
admin.site.register(Grades,GrandesAdmin)
admin.site.register(Students,StudentsAdmin)
其中admin.site.register(Grades)和admin.site.register(Students) 可以将班级表和学生表注册进去,在界面上可以查看操作 。
上面的GrandesAdmin和StudentsAdmin则定义了增加,修改,查看数据的方式 。
效果如下:
列表属性,让数据显示存在标题 。
右边会存在一个过滤器,显示所有的班级名称
search_fields 会使之出现一个搜索框
分页属性则是当数据量超过定义的值是将分多页显示 。
fieldsets 则是将属性分组 。
fields则可以定义先后顺序,跟fieldsets 不可同时出现 。
Django项目部署-01的更多相关文章
- Django项目部署在Linux下以进程方式启动
Django项目部署在Linux下以进程方式启动 这是一篇关于如何在linux下,以后台进程的方式运行服务,命令改改基本上就通用了. 开发完Django项目后,需要把项目部署到linux环境下.当然, ...
- 使用gunicorn将django项目部署到生产环境的子目录下,在nginx后端获取客户真实IP地址
生产环境有时,并不是为了一个项目而存在的.毕竟,域名是比较稀有的. 今天遇到这个问题,解决了.作个记录. 并且,如果将django项目部署在Nginx后面,那如何获取用户真实的IP地址呢? 下面就来解 ...
- Django项目部署(django+guncorn+virtualenv+nginx)
一.说明 为了django项目部署到生产环境上,能够稳定的运行,且能够同时指出http和https的访问,对django的部署进行了一些研究,决定采用django + gunicorn + virtu ...
- django项目部署过程
django项目部署过程 1.上传代码 用git或者其他工具,如scp 代码上传后保证每个应用下的migrations文件夹里只有一个__init__.py文件,自己的迁移文件不要上传上来,具体的gi ...
- Windows下django项目部署 通过Apache2.4+mod_wsgi
经过几天踩坑,记录在Windows10下通过Apache2.4部署Django项目的过程 运行环境: 先说下环境,怎么安装倒是其次的,版本很重要,我是根据mod_wsgi的版本要求下载的各个版本(py ...
- 2019/01/17 对django项目部署的学习
前记:最近在学习django项目的部署. 开发环境:windows10,使用pycharm,python2.7.15,django1.11.本地测试使用nginx和前端交互. 生产环境:centos7 ...
- 学习VirtualEnv和Nginx+uwsgi用于django项目部署
以下叙述中用到的操作系统:Linux CentOS 6.X. 最近几天了解一下VirtualEnv,Apache+Daemon mode,Nginx+uwsgi的概念,并且在项目中实验性部署了一下(目 ...
- django 项目部署在 Apache 后, 设置二级域名(Apache虚拟主机 、 万网二级域名设置)
上一篇文章简单说了怎么把django的项目部署到Apache上. 现在想弄个二级域名,也就是我原来有个域名 www.mysite.com,现在我想弄个 bbs.mysite.com ,该怎么做呢. 要 ...
- Django项目部署到Apache服务器
本文讲述的是在阿里云服务器(ECS)上部署Django项目于Apache,服务器操作系统为ubuntu,公网Ip地址为123.56.30.151. 将Django部署到Apache服务器的原因 Dja ...
随机推荐
- S5PV210启动过程详解1
内存: SRAM 静态内存 特点就是容量小.价格高.优点是不需要软件初始化直接上电就能用 DRAM 动态内存 特点就是容量大.价格低.缺点就是上电后不能直接使用,需要软件初始化后才可 ...
- docker-es
镜像地址https://hub.docker.com/_/elasticsearch/ docker pull elasticsearch 这个版本是dockerhub最新,官方最新版:https:/ ...
- 条款3:尽可能的使用const
const成员函数的一般好处有: 它使得class接口比较容易理解. 它使得操纵const对象成为可能. 使用的过程中应该在const与non const成员函数之间避免代码重复: class Tex ...
- vs2013出现错误提示error C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s
这个问题是vs准备弃用strcpy带来的,因为觉得他不太安全 可以尝试在main函数前面加上#pragma warning(disable:4996)即可解决这个问题
- 条款22:将成员变量声明为private
protected成员变量的封装性并非高于public变量. 如果有个public的成员变量,一旦其需要改变,那么所有使用它的代码都需要改变. 如果有个protected的成员变量,一点其需要改变,那 ...
- Lua学习---编译生成lua和luac
众所周知,Lua是一种强大的脚本语言,并且这种语言是用C语言实现的.为什么要学习这门语言?因为它可以增强我看C语言代码的功底. 我下的Lua版本是Lua5.3,关于Lua5.3的简介如下: http: ...
- Windows10使用Chocolatey安装mysql之后无法使用的解决办法
问题背景:使用了一台新的虚拟机,并且安装了Chocolatey作为Windows的包管理器,之后安装mysql 那么问题发生了,使用mysql命令根本没有任何反应,也不报错,但是安装的时候是提示安装成 ...
- 记录最近工作使用javascript对select[option]的操作
1: 数据库取值赋予select选项 $(function(){ $("input[name='state'][value='{$store.state}']").attr(&qu ...
- sql_自连接,181,182,196,197
181. Employees Earning More Than Their Managers https://leetcode.com/problems/employees-earning-more ...
- 帮你彻底解决eclipse(myeclipse)中写struts.xml配置文件
其实,在自己写struts.xml的时候,竟然没有代码提示功能.让我非常的烦恼,其实解决这个问题的关键还是system不知道他的dtd的规则无法提示配置信息 很简单,那就让它知道就OK了!!! 道理明 ...