环境:安装了django1.11,mysql,Mysql-python
创建一个django项目
django-admin.py startproject shuili
创建app(在项目的根目录下),注意以下步骤都是基于app
python3 manage.py startapp back
目录结构
shuili
|-- back
| |-- admin.py
| |-- admin.pyc
| |-- apps.py
| |-- __init__.py
| |-- __init__.pyc
| |-- migrations
| | |-- 0001_initial.py
| | |-- 0001_initial.pyc
| | |-- __init__.py
| | `-- __init__.pyc
| |-- models.py
| |-- models.pyc
| |-- tests.py
| `-- views.py
|-- manage.py
|-- run.py
`-- shuili
|-- __init__.py
|-- __init__.pyc
|-- settings.py
|-- settings.pyc
|-- urls.py
|-- urls.pyc
|-- wsgi.py
`-- wsgi.pyc
访 http://127.0.0.1:8000/ (或者http://localhost:8000/)即可得到 It worked!
python manage.py runserver 0.0.0.0:8000
修改settings.py的db配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'shuili',
'USER': 'root',
'PASSWORD': '123456',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
修改静态文件配置,admin的static静态文件可以在python的site-packages下Django-1.11-py2.7.egg\django\contrib\admin\static找到。可以把此目录下的文件拷贝到当前项目下。
admin的templates 默认使用的是Django-1.11-py2.7.egg\django\contrib\admin\templates。
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')#static 目录的绝对位置
print STATIC_ROOT
在urls.py 最下面加入
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns += staticfiles_urlpatterns()
创建数据库
python manage.py makemigrations
python manage.py migrate
创建admin账号密码
python manage.py createsuperuser
启动项目
python manage.py runserver 0.0.0.0:8000
登录界面
创建新的数据库 model,models.py(注意此处没有max_length=255等参数,是因为在数据库中寂静建立一下三个表,如果没有建立,则需要写这些参数)
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models
# Create your models here.
class SiteInfo(models.Model):
"""
站点信息
"""
class Meta:
db_table = 'site_info'
verbose_name = "站点信息"
verbose_name_plural = "站点信息"
id = models.CharField(max_length=255,db_column='id',primary_key=True)
site_num = models.CharField(max_length=255,db_column='site_num')
site_name = models.CharField(max_length=255,db_column='site_name')
province = models.CharField(max_length=255,db_column='province')
city = models.CharField(max_length=255,db_column='city')
area = models.CharField(max_length=255,db_column='area')
lo = models.FloatField(db_column='lo')
la = models.FloatField(db_column='la')
remarks = models.CharField(max_length=255,db_column='remarks',blank=True)
type = models.CharField(max_length=255,db_column='type')
#around_site_ids = models.CharField(max_length=255,db_column='around_site_ids')
site_info = models.ManyToManyField("self",verbose_name = "相关站点",blank=True)
create_time = models.DateTimeField(db_column='create_time')
update_time =models.DateTimeField(db_column='update_time')
def __str__(self):
return self.site_name#外键会调用
class River(models.Model):
"""
水位
"""
class Meta:
db_table = 'river'
verbose_name = "水位"
verbose_name_plural = "水位"
id = models.CharField(max_length=255,db_column='id',primary_key=True)
data = models.FloatField(db_column='data',verbose_name='data1')
#site_id = models.CharField(db_column='site_id')
site=models.ForeignKey(SiteInfo,verbose_name='站点')
remarks = models.CharField(max_length=255,db_column='remarks',blank=True)
create_time = models.DateTimeField(db_column='create_time')
date_hour = models.CharField(max_length=255,db_column='date_hour')
class Rain(models.Model):
"""
降水
"""
class Meta:
db_table = 'rain'
verbose_name = "降水"
verbose_name_plural = "降水"
id = models.CharField(max_length=255,db_column='id', primary_key=True)
data = models.FloatField(db_column='data')
#site_id = models.CharField(max_length=20,db_column='site_id')
site = models.ForeignKey(SiteInfo)
remarks = models.CharField(max_length=255,db_column='remarks',blank=True)
create_time = models.DateTimeField(db_column='create_time')
date_hour = models.CharField(max_length=255,db_column='date_hour')
根据model建立数据库表(admin工具自动建立),输入以下命令
python manage.py makemigrations
python manage.py migrate
如果执行python manage.py makemigrations提示没有改变No changes detected,执行以下步骤:
1、删除 app目录下migrations目录下除了__init__.py文件以外的所有文件。
如果提示执行 python manage.py migrate提示 No migrations to apply,执行如下步骤
1、从数据库删除自己app的记录
delete from django_migrations where app='back'; #back是你app的名字
把model注册给admin管理
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.contrib import admin
import models
# Register your models here.
class RiverAdmin(admin.ModelAdmin):
list_display = ('id', 'data', 'site','remarks','create_time','date_hour') #添加字段显示
search_fields = ('data', 'remarks') #添加快速查询栏
class RainAdmin(admin.ModelAdmin):
list_display = ('id', 'data', 'site','remarks','create_time','date_hour') #添加字段显示
search_fields = ('data', 'remarks') #添加快速查询栏
admin.site.register(models.SiteInfo)
admin.site.register(models.Rain, RainAdmin)
admin.site.register(models.River, RiverAdmin)
加入自己的app包路径
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
"back"#models.py的目录
]
启动项目,并登陆可以看到