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‘:‘3306‘,
    }
}
ENGINE 表示数据库的引擎名称,NAME 为数据库的名称USER为数据库的用户名PASSWORD为数据库用户名密码HOST为IPPORT为端口号

修改完毕后,需要用到mysql还需要在project\myApp\__init__.py文件中声名
import pymysqlpymysql.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 不可同时出现 。


 

 

原文地址:https://www.cnblogs.com/catxjd/p/8994415.html

时间: 2024-11-05 19:30:54

Django项目部署-01的相关文章

Django 项目部署

Django 项目部署 原文地址:https://www.cnblogs.com/guozepingboke/p/10844060.html

CentOS 7 下Django项目部署教程(基于uwsgi和Nginx)

本文主要介绍如何在Linux平台上部署Django相关项目,关于Django项目的部署在互联网论坛上有很多的资料,笔者在查阅众多资料并经过实践后发现结果并不如意(或多或少总是遇到一些问题,往往与资料的预期不相符).在浏览了许多资料后笔者整理得出了部署Django项目的一般性方法,部署的方法有很多种,在此笔者选择了较为常用的基于uwsgi和Nginx的部署方案. 一.前提准备 部署前主要是需要做一些与服务器相关的准备工作,本次教程的服务器采用了阿里云的 CentOS 7.3 64位,当然作为资料学

django 项目部署在 Apache 后, 设置二级域名

上一篇文章简单说了怎么把django的项目部署到Apache上. 现在想弄个二级域名,也就是我原来有个域名 www.mysite.com,现在我想弄个 bbs.mysite.com ,该怎么做呢. 要用到 Apache 的虚拟主机配置. 其实Apache的虚拟主机之前也配置过,有时有效,有时又不好用,也不知道个所以然.这次我详细的写一下每一步都要怎么做: 第一步:开启Apache虚拟主机功能: Apache的虚拟主机功能,默认是关闭的.如果要使用这个功能,就要开启虚拟主机功能. 如同上文提到的A

Django项目部署到Apache服务器

本文讲述的是在阿里云服务器(ECS)上部署Django项目于Apache,服务器操作系统为ubuntu,公网Ip地址为123.56.30.151. 将Django部署到Apache服务器的原因 Django中的runserver只是一个很简单的web服务器,启动服务器常见的方法是通过Putty执行命令.虽然调试和测试方便,然而如果关闭了Putty或者退出命令,服务就停止了,并且不能承受许多用户同时使用的负载.所以需要将Django部署到生产级的服务器,这里选择Apache. ubuntu上部署详

DJANGO项目部署到服务器上

---- 说明: 本文章来自于 http://www.pythonav.com/wupeiqi/3.html  是武沛齐老师个人博客上取的内容. 尊重老师的成果. 小白的项目部署 项目开发完毕后,需要将代码放到服务器上,这样用户才能访问.接下来我们一步一步来进行一波部署操作. 1. 简单粗暴 项目开发完毕,在部署之前需要再配置文件中将 ALLOWED_HOSTS配置设置为:当前服务器IP或*,如: ALLOWED_HOSTS = ["*",] 示例源码:猛击下载 然后将源码上传至服务器

django项目部署后静态文件收集【解决admin后台静态文件丢失】

在部署完Django项目后,进行admin后台登录发现样式丢失,后台日志显示:js和css文件丢失 解决办法: 配置settings.py如下: #DEBUG打开时,app的静态文件默认从这里读取 STATIC_URL = '/static/' #静态文件根目录,当关闭DEBUG的时候admin从STATIC_ROOT获取静态文件,同时需要配置url STATIC_ROOT = ("f:/py_workspace/DJ/proj/people/static/") #Django部署在A

Django项目部署(nginx+uWSGI+django+virtualenv+supervisor发布web服务器 )

一.简介 WSGI是Web服务器网关接口.它是一个规范,描述了Web服务器如何与Web应用程序通信,以及Web应用程序如何链接在一起以处理一个请求,(接收请求,处理请求,响应请求) 基于wsgi运行的框架有bottle,DJango,Flask,用于解析动态HTTP请求 支持WSGI的服务器 wsgiref python自带的web服务器 Gunicorn 用于linux的 python wsgi Http服务器,常用于各种django,flask结合部署服务器. mode_wsgi 实现了Ap

django项目部署上线

前言 完善的django项目上线,有很多种上线的方法,比如apache, uwsgi, nginx等.这里只介绍2种,一种是django自带的,另外一种则是nginx + uwsgi完成介绍.这里的系统环境采用的是ubantu系统, python环境采用的是python3, django环境采用1.11 一.自带的部署功能 数据从pycharm转移到ubantu中.使用xshell软件 QQ图片20180512193224.png 数据库迁移: 如果django项目中的数据是在本地的mysql中

Django项目部署到Apache服务器上

之前写了把Django部署到XAMPP上,但是有bug,翻apache日志的时候发现会无法import _ssl,然后我就怒而直接装apache2了 配置方法大约和这篇文章差不多 安装必要的包 sudo apt-get update sudo apt-get install python-pip apache2 libapache2-mod-wsgi 然后还要保证WSGI模块在运行: sudo a2enmod wsgi 配置Python虚拟环境 为了不要修改系统python,事实上我怀疑系统py