Django 开发-管理站点管理应用数据

原创 2016年05月31日 22:56:20

Django 开发-管理站点管理应用数据

安装就不再详细介绍了,跟前段时间写的python scrapy的安装方法差不多,关于pip可以参考下python下实现scrapy这篇文章,可以用pip安装。

#pip install django

创建项目

安装完之后,首先得创建个项目。必须使用Django先创建一个项目,作为后面所有web网站的基础模块,也可以说是基础框架。

#django-admin startproject mysite

可以看到,在当前目录下生成了个website文件夹,该文件下面的目录架构如下:

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        wsgi.py

manage.py: 主要用于通过命令行创建、管理web应用,后面会用到会经常用到,具体包含哪些明天可以通过python manage.py 回车看一下,查看某条具体应用怎么用可以通过python manage.py help command 回车查看。
init.py:用于标明mysite是个包,python手册是“The init.py files are required to make Python treat the directories as containing packages”这样描述的。意思是通过init.py表示该目录表示一个包。
settings.py:配置文件,现在里面已经包含了一些基本框架的配置,后面如果要加入其它的web应用,需要通过这个配置文件加入。
urls.py:主要用于设计用户访问网站是,给我们后台视图之间的映射关系,这样更容易保证URL的整洁,可读。
wsgi.py:wsgi服务器相关,我也不太懂,有兴趣的自己去找找资料。

数据库的建立

在mysite.py 目录下的setting.py可以进行数据的配置,默认是利用python自带的sqlite数据库,如果要改用其它数据库,可以通过这里配置。我这里就用默认的数据库。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

还可以setting.py文件中看到下面几行配置,这几行配置主要是说明已经安装的应用,如果后续需要加入应用,就需要在这里进行添加。

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
)

默认情况下,INSTALLED_APPS包含下面的应用,它们都是Django 与生俱来的
django.contrib.admin —— 管理站点。
django.contrib.auth —— 认证系统。
django.contrib.contenttypes —— 用于内容类型的框架。
django.contrib.sessions —— 会话框架。
django.contrib.messages —— 消息框架。
django.contrib.staticfiles —— 管理静态文件的框架。

这些应用至少需要一个数据库,所以在使用之前必须先创建数据数据库。

#python manage.py migrate

启动服务,访问系统自带的应用

# python manage.py runserver 0.0.0.0:8000
Performing system checks...

System check identified no issues (0 silenced).

You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.

May 31, 2016 - 14:06:03
Django version 1.8.2, using settings 'mysite.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.

可以看到我这里启动服务的时候ip用的是0.0.0.0,而不是127.0.0.0(只能本机访问),这是为了能够在虚拟机外面的主机上访问。
![这里写图片描述](http://img.blog.csdn.net/20160531221633578)

前面setting.py的时候说了,项目中已经自带了一些应用,如admin,auth等,这里访问一下admin应用, http://192.168.255.141:8000/admin ,跳转到了用户管理页面。管理页面的具体在后面讲述。
![这里写图片描述](http://img.blog.csdn.net/20160531222020832)

#创建应用

可以通过manage.py 命令创建应用

创建应用

可以通过manage.py 命令创建应用,下面通过创建一个投票网站,参照Django 1.8.2手册。

 #python manage.py startapp poll

会在mysite目录下创建一个polls目录,这个就是新建应用的目录结构:

polls/
    __init__.py
    admin.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.p

开始写一个web应用的时候,我们可能最先需要的就是进行数据库设计,而在Django中用模型(models)表示。用models能够设计出各种关系型数据库,一对一、一对多、多对一。

设计models

from django.db import models


class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')


class Choice(models.Model):
    question = models.ForeignKey(Question)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

上述代码非常直观。每个模型都用一个类表示,该类继承自django.db.models.Model。每个模型有多个类的属性变量,而每一个类的属性变量又都代表了数据库表中的一个字段。

每个字段通过Field类的一个实例表示 —— 例如字符字段CharField和日期字段DateTimeField。这种方法告诉Django,每个字段中保存着什么类型的数据。

创建模型对应的数据库

上面只是把数据库之间的关系通过模型表示出来了,而并未真正的创建数据库。前面已经提到过,如果要在一个项目中添加应用,必须在配置文件中的INSTALLED_APPS 条目中添加应用。

INSTALLED_APPS = (
    'django.contrib.admin',
    ...
    'django.contrib.staticfiles',
    'polls', #新添加
)

此外需要polls迁移到项目中生效,必须执行下面命令。

#python manage.py makemigrations polls

Django使用迁移文件来保存对模型的更改(即数据库模式的更改)—— 所谓迁移文件其实就是磁盘上的普通文件。 如果愿意,你可以阅读迁移文件来了解新模型; 这个迁移文件就是 polls/migrations/0001_initial.py。

再次执行前面讲解的项目中创建数据库的方法,由于在setting已经加入了polls,所以相关的数据库polls 相关的数据库也会被创建。

$ python manage.py migrate

如果要查看创建polls相关的数据库到底执行了哪些命令,可以通过下面命令查看。

# python manage.py  sqlmigrate polls  0001
BEGIN;
CREATE TABLE "polls_choice" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "choice_text" varchar(200) NOT NULL, "votes" integer NOT NULL);
CREATE TABLE "polls_question" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "question_text" varchar(200) NOT NULL, "pub_date" datetime NOT NULL);
CREATE TABLE "polls_choice__new" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "choice_text" varchar(200) NOT NULL, "votes" integer NOT NULL, "question_id" integer NOT NULL REFERENCES "polls_question" ("id"));
INSERT INTO "polls_choice__new" ("choice_text", "votes", "id", "question_id") SELECT "choice_text", "votes", "id", NULL FROM "polls_choice";
DROP TABLE "polls_choice";
ALTER TABLE "polls_choice__new" RENAME TO "polls_choice";
CREATE INDEX "polls_choice_7aa0f6ee" ON "polls_choice" ("question_id");

COMMIT;

管理站点

前面我们在启动服务后,访问了admin管理里面,访问之后,可以看到需要我们输入用户名、密码登录,登录之后可以通过web页面管理数据。但是这个用户名、密码是怎么来的呢?

可以通过命令创建超级用户。

# python manage.py createsuperuser
Username (leave blank to use 'root'): admin
Email address: 1234@126.com
Password: 
Password (again): 
Superuser created successfully.

利用超级用户登录admin页面
这里写图片描述

登录之后,超级用户可以新增用户组、用户。
这里写图片描述

新增用户后,需要用户相应的权限,我这里赋予test用户有超级用户权限,还有管理权限,
这里写图片描述

用test用户重新登录页面
这里写图片描述

给polls应用通过后台添加数据

如果想通过后台管理choice,则需要把choice 模型在admin.py文件中进行注册

from django.contrib import admin

from .models import Choice, Question


class ChoiceInline(admin.StackedInline):
    model = Choice
    extra = 3


class QuestionAdmin(admin.ModelAdmin):
    fieldsets = [
        (None,               {'fields': ['question_text']}),
        ('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
    ]
    inlines = [ChoiceInline]

admin.site.register(Question, QuestionAdmin)

QuestionAdmin 类:主要设置字段在页面上的显示方式。

ChoiceInline类:内嵌类,modle指定要内嵌的模型。

这里写图片描述

这里写图片描述
管理站点可以管理为polls的数据了

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Django 站点管理(Admin)

Django 后台管理

Django 学习 3 ADMIN站点管理

站点管理: Django提供了一个自动生成的超级管理员站点,如果你曾经注意到admin页面,那么就是它了。如果要去生成一个管理员站点让你的员工或客户去增、删、改站点内容是一件乏味而缺乏创造性的事情,因...

4.Django入门:教程-管理站点

创建一个管理站点1.创建管理员用户python manage.py createsuperuser2.启动开发服务器python manage.py runserver3.进入管理站点http://1...

Python Django基础教程(四)(admin站点管理)

Django版本:1.11 操作系统:Windows Python:3.5Django站点管理(admin) 项目架构 构建Django站点站点管理讲得通俗一点,就是我们可以通过web方式...

django站点管理

django站点管理   管理界面是基础设施中非常重要的一部分。这是以网页和有限的可信任管理者为基础的界面,它可以让你添加,编辑和删除网站内容。Django有自己的自动管理界面。这个特性是这样起作...

Django学习总结之六-站点管理

一、django.contrib包 django.contrib是一套庞大的功能集。django自带许多功能插件,他们都存在于contrib包里。 二、激活管理界面 1、修改setting.py...

第六章 Django站点管理

第六章 Django站点管理 8 10 1 13 9 5 5 3 3 6 3 8 ...

django admin站点管理 示例

django(1.4) 的 admin站点管理 ,简单而又实用,掌握了会带来很多的便利。 使用admin站点管理,你需要做2步工作:一是激活(启动)管理界面,二是配置模型(你要管理的模型)的管理界面。...

Django学习笔记(第六节)Django站点管理

激活管理界面 第一步,对你的settings文件做如下这些改变: 1.将'django.contrib.admin'加入setting的INSTALLED_APPS配置中 (INSTALLED_APP...
  • ioiol
  • ioiol
  • 2015-05-12 23:46
  • 171

Django项目实践4 - Django站点管理(后台管理员)

http://blog.csdn.net/pipisorry/article/details/45079751 上篇:Django项目实践3 - Django模型 Introduction 对于...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)