Django管理后台的搭建

安装环境:

uname -r

14.04.1-Ubuntu  x86_64 x86_64 x86_64 GNU/Linux

ubuntu自带python 2.7.6

https://www.djangoproject.com/download/下载

django-1.6.11.tar.gz

配置ubuntu机器基本环境

[email protected]:~# cat   /etc/network/interfaces

# interfaces(5) file used by ifup(8) and ifdown(8)

auto lo

iface lo inet loopback

auto  eth0

iface eth0  inet static

address  192.168.1.136

netmask  255.255.255.0

gateway  192.168.1.1

dns-nameservers  8.8.8.8

[email protected]:~# cat  /etc/resolvconf/resolv.conf.d/base

nameserver  8.8.8.8

nameserver  8.8.4.4

nameserver  114.114.114.114

[email protected]:~# resolvconf -u

reboot重启系统

将虚拟机的网络连接到,网络连接桥接模式直接连接物理机,这样子就可以ping  [email protected]:~#www.baidu.com了

ping -c 3  www.baidu.com

PING www.a.shifen.com (61.135.169.121) 56(84) bytes of data.

64 bytes from 61.135.169.121: icmp_seq=1 ttl=50 time=24.3 ms

64 bytes from 61.135.169.121: icmp_seq=3 ttl=50 time=24.2 ms

--- www.a.shifen.com ping statistics ---

3 packets transmitted, 2 received, 33% packet loss, time 2010ms

rtt min/avg/max/mdev = 24.224/24.282/24.341/0.166 ms

修改ubuntu的命令提示符

vim ~/.bashrc

56 PS1=‘${debian_chroot:+($debian_chroot)}[\[email protected]\h\w]\$ ‘   ##自己的机器

source ~/.bashrc

这样子提示符就变成自己喜欢的了[[email protected]~]#看着真舒服。

怎么用FileZilla连接ubantu系统

sudo apt-get install openssh-server openssh-client

/etc/init.d/ssh restart

FileZilla软件里输入sftp://192.168.1.136   sige   123456

其他的不多说了,看的懂得不用说,看不懂的说了也等于白说。

上传自己下载的Django-1.6.11.tar.gz,当然你也可以用wget下载资源。

然后就是源码编译3步走了

tar -zxvf Django-1.6.11.tar.gz

cd Django-1.6.11/

python setup.py install

cd  /root

django-admin.py startproject HelloWorld

创建HelloWorld第一个项目

apt-get  install tree

[[email protected]~/HelloWorld]# tree

.

|-- HelloWorld

|   |-- __init__.py

|   |-- settings.py

|   |-- urls.py

|   `-- wsgi.py

`-- manage.py

我的项目都在这里了。

python manage.py runserver 0.0.0.0:8000

在浏览器里输入IP和端口

http://192.168.1.136:8000

在先前创建的 HelloWorld 目录下的 HelloWorld 目录新建一个 view.py 文件,并输入代码:

cat  view.py

from django.http import HttpResponse

def hello(request):

return HttpResponse("Hello world ! ")

接着,绑定 URL 与视图函数。打开 urls.py 文件,删除原来代码,将以下代码复制粘贴到 urls.py 文件中:

from django.conf.urls import *

from HelloWorld.view import hello

urlpatterns = patterns("",

(‘^hello/$‘, hello),

)

整个目录结构如下:

[[email protected]~/HelloWorld]# tree

.

|-- HelloWorld

|   |-- __init__.py

|   |-- __init__.pyc

|   |-- settings.py

|   |-- settings.pyc

|   |-- urls.py              # url 配置

|   |-- urls.pyc

|   |-- view.py              # 添加的视图文件

|   |-- view.pyc             # 编译后的视图文件

|   |-- wsgi.py

|   `-- wsgi.pyc

`-- manage.py

[[email protected]~/HelloWorld]# pwd

/root/HelloWorld

[[email protected]~/HelloWorld]# python manage.py runserver 0.0.0.0:8000

完成后,启动 Django 开发服务器,并在浏览器访问打开浏览器并访问:

http://192.168.1.136:8000/hello

就出来hello  world!啦

在 HelloWorld 目录底下创建 templates 目录并建立 hello.html文件,整个目录结构如下:

[[email protected]~/HelloWorld]# mkdir templates

[[email protected]~/HelloWorld]# tree

HelloWorld/

|-- HelloWorld

|   |-- __init__.py

|   |-- __init__.pyc

|   |-- settings.py

|   |-- settings.pyc

|   |-- urls.py

|   |-- urls.pyc

|   |-- view.py

|   |-- view.pyc

|   |-- wsgi.py

|   `-- wsgi.pyc

|-- manage.py

`-- templates

`-- hello.html

[[email protected]~/HelloWorld/templates]# cat hello.html

<h1>{{ hello }}</h1>

从模板中我们知道变量使用了双括号。

接下来我们需要向Django说明模板文件的路径,修改HelloWorld/settings.py,修改 TEMPLATES 中的 DIRS 为[BASE_DIR+"/templates",],如下所示:

[[email protected]~/HelloWorld/HelloWorld]# cat settings.py

import os

BASE_DIR = os.path.dirname(os.path.dirname(__file__))

SETTINGS_PATH = os.path.dirname(__file__)

PROJECT_PATH = os.path.join(SETTINGS_PATH, os.pardir)

PROJECT_PATH = os.path.abspath(PROJECT_PATH)

TEMPLATES_PATH = os.path.join(PROJECT_PATH, "templates")  #模板路径

我们现在修改 view.py,增加一个新的对象,用于向模板提交数据:

[[email protected]~/HelloWorld/HelloWorld]# pwd

/root/HelloWorld/HelloWorld

[[email protected]~/HelloWorld/HelloWorld]# cat view.py

# -*- coding: utf-8 -*-

#from django.http import HttpResponse

from django.shortcuts import render

def hello(request):

context          = {}

context[‘hello‘] = ‘Hello World!‘

return render(request, ‘hello.html‘, context)

可以看到,我们这里使用render来替代之前使用的HttpResponse。render还使用了一个字典context作为参数。

context 字典中元素的键值 "hello" 对应了模板中的变量 "{{ hello }}"。

[[email protected]~/HelloWorld]# pwd

/root/HelloWorld

[[email protected]~/HelloWorld]# python manage.py runserver 0.0.0.0:8000

再访问访问http://192.168.1.136:8000/hello/,可以看到页面:

大写的Hello  World!

模板可以用继承的方式来实现复用。

接下来我们先创建之前项目的 templates 目录中添加 base.html 文件,代码如下:

[[email protected]~/HelloWorld/templates]# pwd

/root/HelloWorld/templates

[[email protected]~/HelloWorld/templates]# cat base.html

<html>

<head>

<title>Hello World!</title>

</head>

<body>

<h1>Hello World!</h1>

{% block mainbody %}

<p>original</p>

{% endblock %}

</body>

</html>

以上代码中,名为mainbody的block标签是可以被继承者们替换掉的部分。

所有的 {% block %} 标签告诉模板引擎,子模板可以重载这些部分。

hello.html中继承base.html,并替换特定block,hello.html修改后的代码如下:

[[email protected]~/HelloWorld/templates]# pwd

/root/HelloWorld/templates

[[email protected]~/HelloWorld/templates]# cat hello.html

{% extends "base.html" %}

{% block mainbody %}

<p>继承了 base.html 文件</p>

{% endblock %}

第一行代码说明hello.html继承了 base.html 文件。可以看到,这里相同名字的block标签用以替换base.html的相应block。

[[email protected]~/HelloWorld]# pwd

/root/HelloWorld

[[email protected]~/HelloWorld]# python manage.py runserver 0.0.0.0:8000

重新访问地址http://192.168.45.3:8000/hello/,输出结果如下:

http://192.168.1.136:8000/hello/

Hello World!

继承了 base.html 文件

接下来就是操作数据库了

apt-get install mysql-server

service mysql start

ps aux | grep mysql

mysql -uroot -p123456

mysql> create database  test;

我们在项目的 settings.py 文件中找到 DATABASES 配置项,将其信息修改为:

[[email protected]~/HelloWorld/HelloWorld]# pwd

/root/HelloWorld/HelloWorld

[[email protected]~/HelloWorld/HelloWorld]# cat settings.py

DATABASES = {

‘default‘: {

‘ENGINE‘: ‘django.db.backends.mysql‘,

‘NAME‘: ‘test‘,

‘USER‘: ‘root‘,

‘PASSWORD‘: ‘123456‘,

‘HOST‘: ‘localhost‘,

‘PORT‘: ‘3306‘,

}

}

上面包含数据库名称和用户的信息,它们与MySQL中对应数据库和用户的设置相同。Django根据这一设置,与MySQL中相应的数据库和用户连接起来。

Django规定,如果要使用模型,必须要创建一个app。我们使用以下命令创建一个 TestModel 的 app:

[[email protected]~/HelloWorld]# pwd

/root/HelloWorld

[[email protected]~/HelloWorld]# python manage.py startapp TestModel

目录结构如下:

[[email protected]~/HelloWorld]# tree

HelloWorld

|-- TestModel

|   |-- __init__.py

|   |-- admin.py

|   |-- models.py

|   |-- tests.py

|   `-- views.py

我们修改 TestModel/models.py文件,代码如下:

[[email protected]~/HelloWorld/TestModel]# cat models.py

from django.db import models

class Test(models.Model):

name = models.CharField(max_length=20)

以上的类名代表了数据库表名,且继承了models.Model,类里面的字段代表数据表中的字段(name),数据类型则由CharField(相当于varchar)、DateField(相当于datetime), max_length 参数限定长度。

接下来在settings.py中找到INSTALLED_APPS这一项,如下:

[[email protected]~/HelloWorld/HelloWorld]# pwd

/root/HelloWorld/HelloWorld

[[email protected]~/HelloWorld/HelloWorld]# cat settings.py

INSTALLED_APPS = (

‘django.contrib.admin‘,

‘django.contrib.auth‘,

‘django.contrib.contenttypes‘,

‘django.contrib.sessions‘,

‘django.contrib.messages‘,

‘django.contrib.staticfiles‘,

‘TestModel‘,                           ###添加此项

)

在命令行中运行python manage.py syncdb,看到几行"Creating table…"的字样,你的数据表就创建好了。

[[email protected]~/HelloWorld/HelloWorld]# sudo apt-get install python-mysqldb

[[email protected]~/HelloWorld/HelloWorld]# python manage.py syncdb

接下来我们在 HelloWorld 目录中添加 testdb.py 文件,并修改urls.py:

[[email protected]~/HelloWorld/HelloWorld]# pwd

/root/HelloWorld/HelloWorld

[[email protected]~/HelloWorld/HelloWorld]# cat testdb.py

# -*- coding: utf-8 -*-

from django.http import HttpResponse

#from TestModel.models import Test

# 数据库操作

def testdb(request):

test1 = Test(name=‘w3cschool.cc‘)

test1.save()

return HttpResponse("<p>数据添加成功!</p>")

添加数据需要先创建对象,然后再执行 save 函数,相当于SQL中的INSERT:

[[email protected]~/HelloWorld/HelloWorld]# cat urls.py

# -*- coding: utf-8 -*-

from django.http import HttpResponse

from TestModel.models import Test

# 数据库操作

def testdb(request):

test1 = Test(name=‘w3cschool.cc‘)

test1.save()

return HttpResponse("<p>数据添加成功!</p>")

[[email protected]~/HelloWorld]# pwd

/root/HelloWorld

[[email protected]~/HelloWorld]# python manage.py runserver 0.0.0.0:8000

访问http://192.168.1.136:8000/testdb/ 就可以看到数据添加成功的提示。

如何用Django对用户提交的表单数据进行处理?

[[email protected]~/HelloWorld/HelloWorld]# pwd

/root/HelloWorld/HelloWorld

[[email protected]~/HelloWorld/HelloWorld]# cat search.py

# -*- coding: utf-8 -*-

from django.http import HttpResponse

from django.shortcuts import render_to_response

# 表单

def search_form(request):

return render_to_response(‘search_form.html‘)

# 接收请求数据

def search(request):

request.encoding=‘utf-8‘

if ‘q‘ in request.GET:

message = ‘你搜索的内容为: ‘ + request.GET[‘q‘].encode(‘utf-8‘)

else:

message = ‘你提交了空表单‘

return HttpResponse(message)

[[email protected]~/HelloWorld/templates]# pwd

/root/HelloWorld/templates

[[email protected]~/HelloWorld/templates]# cat search_form.html

<html>

<head>

<meta charset="utf-8" />

<title>Search - w3cschool.cc</title>

</head>

<body>

<form action="/search/" method="get">

<input type="text" name="q">

<input type="submit" value="Search">

</form>

</body>

</html>

urls.py 规则修改为如下形式:

[[email protected]~/HelloWorld/HelloWorld]# pwd

/root/HelloWorld/HelloWorld

[[email protected]~/HelloWorld/HelloWorld]# cat urls.py

from django.conf.urls import *

from HelloWorld.view import hello

from HelloWorld.testdb import testdb

from HelloWorld import search

urlpatterns = patterns("",

(‘^hello/$‘, hello),

(‘^testdb/$‘, testdb),

(r‘^search-form/$‘, search.search_form),

(r‘^search/$‘, search.search),

)

[[email protected]~/HelloWorld]# pwd

/root/HelloWorld

[[email protected]~/HelloWorld]# python manage.py runserver 0.0.0.0:8000

浏览器里访问地址:http://192.168.1.136:8000/search-form/并搜索,里面填上搜索的内容点击search就看到东西啦。

上面我们使用了GET方法。视图显示和请求处理分成两个函数处理。

提交数据时更常用POST方法。我们下面使用该方法,并用一个URL和处理函数,同时显示视图和处理请求。

我们在tmplate 创建 post.html:

[[email protected]~/HelloWorld/templates]# pwd

/root/HelloWorld/templates

[[email protected]~/HelloWorld/templates]# cat post.html

<html>

<head>

<meta charset="utf-8" />

<title>Search - w3cschool.cc</title>

</head>

<body>

<form action="/search-post/" method="post">

{% csrf_token %}

<input type="text" name="q">

<input type="submit" value="Submit">

</form>

<p>{{ rlt }}</p>

</body>

</html>

在模板的末尾,我们增加一个rlt记号,为表格处理结果预留位置。

表格后面还有一个{% csrf_token %}的标签。csrf全称是Cross Site Request Forgery。这是Django提供的防止伪装提交请求的功能。POST方法提交的表格,必须有此标签。

在HelloWorld目录下新建 search2.py 文件并使用 search_post 函数来处理 POST 请求:

[[email protected]~/HelloWorld/HelloWorld]# pwd

/root/HelloWorld/HelloWorld

[[email protected]~/HelloWorld/HelloWorld]# cat search2.py

# -*- coding: utf-8 -*-

from django.shortcuts import render

from django.core.context_processors import csrf

# 接收POST请求数据

def search_post(request):

ctx ={}

ctx.update(csrf(request))

if request.POST:

ctx[‘rlt‘] = request.POST[‘q‘]

return render(request, "post.html", ctx)

urls.py 规则修改为如下形式:

[[email protected]~/HelloWorld/HelloWorld]# cat urls.py

from django.conf.urls import *

from HelloWorld.view import hello

from HelloWorld.testdb import testdb

from HelloWorld import search

from HelloWorld import search2

urlpatterns = patterns("",

(‘^hello/$‘, hello),

(‘^testdb/$‘, testdb),

(r‘^search-form/$‘, search.search_form),

(r‘^search/$‘, search.search),

(r‘^search-post/$‘, search2.search_post),

)

[[email protected]~/HelloWorld]# pwd

/root/HelloWorld

[[email protected]~/HelloWorld]# python manage.py runserver 0.0.0.0:8000

浏览器访问 http://192.168.1.136:8000/search-post/ 显示结果有变化啦。

完成以上实例后,我们的目录结构为:

[[email protected]~/HelloWorld]# pwd

/root/HelloWorld

[[email protected]~/HelloWorld]# tree

HelloWorld

|-- HelloWorld

|   |-- __init__.py

|   |-- __init__.pyc

|   |-- models.pyc

|   |-- search.py

|   |-- search.pyc

|   |-- search2.py

|   |-- search2.pyc

|   |-- settings.py

|   |-- settings.pyc

|   |-- testdb.py

|   |-- testdb.pyc

|   |-- urls.py

|   |-- urls.pyc

|   |-- view.py

|   |-- view.pyc

|   |-- wsgi.py

|   `-- wsgi.pyc

|-- TestModel

|   |-- __init__.py

|   |-- __init__.pyc

|   |-- admin.py

|   |-- models.py

|   |-- models.pyc

|   |-- tests.py

|   `-- views.py

|-- manage.py

`-- templates

|-- base.html

|-- hello.html

|-- post.html

`-- search_form.html

3 directories, 29 files

接下来就是Django  Admin管理工具的建立的,很激动呀!!!

[[email protected]~/HelloWorld/HelloWorld]# pwd

/root/HelloWorld/HelloWorld

[[email protected]~/HelloWorld/HelloWorld]# cat settings.py

INSTALLED_APPS = (

‘django.contrib.admin‘,             ###这个就是管理工具啦!!!

‘django.contrib.auth‘,

‘django.contrib.contenttypes‘,

‘django.contrib.sessions‘,

‘django.contrib.messages‘,

‘django.contrib.staticfiles‘,

‘TestModel‘,

)

通常我们在生成项目时会在urls.py中自动设置好,我们只需去掉注释即可。

配置项如下所示:

[[email protected]~/HelloWorld/HelloWorld]# cat  urls.py

from django.conf.urls import *

from HelloWorld.view import hello

from HelloWorld.testdb import testdb

from HelloWorld import search

from HelloWorld import search2

from django.contrib import admin

admin.autodiscover()

urlpatterns = patterns("",

(‘^hello/$‘, hello),

(‘^testdb/$‘, testdb),

(r‘^search-form/$‘, search.search_form),

(r‘^search/$‘, search.search),

(r‘^search-post/$‘, search2.search_post),

(r‘^admin/‘, include(admin.site.urls)),

)

启动开发服务器,然后在浏览器中访问:http://192.168.1.136:8000/admin/就可以访问django的管理界面啦!!!

你可以通过命令 python manage.py createsuperuser 来创建超级用户,这个之前已经创建好的就不需要创建了。这个就是登陆admin的用户名和密码。

[[email protected]~/HelloWorld]# pwd

/root/HelloWorld

[[email protected]~/HelloWorld]# python manage.py runserver 0.0.0.0:8000

浏览器访问 http://192.168.1.136:8000/admin/ 显示结果有变化啦。

为了让admin界面管理某个数据模型,我们需要先注册该数据模型到admin。比如,我们之前在 TestModel 中已经创建了模型 Test 。修改 TestModel/admin.py:

[[email protected]~/HelloWorld/TestModel]# pwd

/root/HelloWorld/TestModel

[[email protected]~/HelloWorld/TestModel]# cat admin.py

from django.contrib import admin

from TestModel.models import Test

# Register your models here.

admin.site.register(Test)

刷新后即可看到 Testmodel 数据表:

[[email protected]~/HelloWorld]# pwd

/root/HelloWorld

[[email protected]~/HelloWorld]# python manage.py runserver 0.0.0.0:8000

浏览器访问 http://192.168.1.136:8000/admin/ 显示结果有变化啦。

管理页面的功能强大,完全有能力处理更加复杂的数据模型。

先在 TestModel/models.py 中增加一个更复杂的数据模型:

[[email protected]~/HelloWorld/TestModel]# pwd

/root/HelloWorld/TestModel

[[email protected]~/HelloWorld/TestModel]# cat models.py

from django.db import models

class Test(models.Model):

name = models.CharField(max_length=20)

# Create your models here.

class Contact(models.Model):

name   = models.CharField(max_length=200)

age    = models.IntegerField(default=0)

email  = models.EmailField()

def __unicode__(self):

return self.name

class Tag(models.Model):

contact = models.ForeignKey(Contact)

name    = models.CharField(max_length=50)

def __unicode__(self):

return self.name

这里有两个表。Tag以Contact为外部键。一个Contact可以对应多个Tag。

我们还可以看到许多在之前没有见过的属性类型,比如IntegerField用于存储整数。

在 TestModel/admin.py 注册多个模型并显示:

[[email protected]~/HelloWorld/TestModel]# pwd

/root/HelloWorld/TestModel

[[email protected]~/HelloWorld/TestModel]# cat admin.py

from django.contrib import admin

from TestModel.models import Test,Contact,Tag

# Register your models here.

admin.site.register([Test, Contact, Tag])

刷新管理页面,显示结果就变了:

[[email protected]~/HelloWorld]# pwd

/root/HelloWorld

[[email protected]~/HelloWorld]# python manage.py runserver 0.0.0.0:8000

浏览器访问 http://192.168.1.136:8000/admin/ 显示结果有变化啦。

我们可以自定义管理页面,来取代默认的页面。比如上面的"add"页面。我们想只显示name和email部分。修改 TestModel/admin.py:

[[email protected]~/HelloWorld/TestModel]# pwd

/root/HelloWorld/TestModel

[[email protected]~/HelloWorld/TestModel]# cat admin.py

from django.contrib import admin

from TestModel.models import Test,Contact,Tag

# Register your models here.

class ContactAdmin(admin.ModelAdmin):

fields = (‘name‘, ‘email‘)

admin.site.register(Contact, ContactAdmin)

admin.site.register([Test, Tag])

我们还可以将输入栏分块,每个栏也可以定义自己的格式。修改TestModel/admin.py为:

[[email protected]~/HelloWorld/TestModel]# pwd

/root/HelloWorld/TestModel

[[email protected]~/HelloWorld/TestModel]# cat admin.py

from django.contrib import admin

from TestModel.models import Test,Contact,Tag

# Register your models here.

class ContactAdmin(admin.ModelAdmin):

fieldsets = (

[‘Main‘,{

‘fields‘:(‘name‘,‘email‘),

}],

[‘Advance‘,{

‘classes‘: (‘collapse‘,), # CSS

‘fields‘: (‘age‘,),

}]

)

admin.site.register(Contact, ContactAdmin)

admin.site.register([Test, Tag])

上面的Contact是Tag的外部键,所以有外部参考的关系。

而在默认的页面显示中,将两者分离开来,无法体现出两者的从属关系。我们可以使用内联显示,让Tag附加在Contact的编辑页面上显示。

修改TestModel/admin.py:

[[email protected]~/HelloWorld/TestModel]# pwd

/root/HelloWorld/TestModel

[[email protected]~/HelloWorld/TestModel]# cat admin.py

from django.contrib import admin

from TestModel.models import Test,Contact,Tag

# Register your models here.

class TagInline(admin.TabularInline):

model = Tag

class ContactAdmin(admin.ModelAdmin):

inlines = [TagInline]  # Inline

fieldsets = (

[‘Main‘,{

‘fields‘:(‘name‘,‘email‘),

}],

[‘Advance‘,{

‘classes‘: (‘collapse‘,),

‘fields‘: (‘age‘,),

}]

)

admin.site.register(Contact, ContactAdmin)

admin.site.register([Test])

[[email protected]~/HelloWorld]# pwd

/root/HelloWorld

[[email protected]~/HelloWorld]# python manage.py runserver 0.0.0.0:8000

浏览器访问 http://192.168.1.136:8000/admin/ 显示结果有变化啦。

我们也可以自定义该页面的显示,比如在列表中显示更多的栏目,只需要在ContactAdmin中增加list_display属性:

[[email protected]~/HelloWorld/TestModel]# pwd

/root/HelloWorld/TestModel

[[email protected]~/HelloWorld/TestModel]# cat admin.py

from django.contrib import admin

from TestModel.models import Test,Contact,Tag

# Register your models here.

class ContactAdmin(admin.ModelAdmin):

list_display = (‘name‘,‘age‘, ‘email‘) # list

admin.site.register(Contact, ContactAdmin)

admin.site.register([Test, Tag])

搜索功能在管理大量记录时非常有,我们可以使用search_fields为该列表页增加搜索栏:

[[email protected]~/HelloWorld/TestModel]# pwd

/root/HelloWorld/TestModel

[[email protected]~/HelloWorld/TestModel]# cat admin.py

from django.contrib import admin

#from TestModel.models import Test

from TestModel.models import Test,Contact,Tag

# Register your models here.

#admin.site.register(Test)

#admin.site.register([Test, Contact, Tag])

#class TagInline(admin.TabularInline):

#    model = Tag

class ContactAdmin(admin.ModelAdmin):

#    inlines = [TagInline]  # Inline

#    fieldsets = (

#        [‘Main‘,{

#            ‘fields‘:(‘name‘,‘email‘),

#        }],

#        [‘Advance‘,{

#            ‘classes‘: (‘collapse‘,), # CSS

#            ‘fields‘: (‘age‘,),

#        }]

#    )

list_display = (‘name‘,‘age‘, ‘email‘) # list

search_fields = (‘name‘,)

admin.site.register(Contact, ContactAdmin)

#admin.site.register([Test, Tag])

admin.site.register([Test])

[[email protected]~/HelloWorld]# pwd

/root/HelloWorld

[[email protected]~/HelloWorld]# python manage.py runserver 0.0.0.0:8000

浏览器访问 http://192.168.1.136:8000/admin/ 显示结果又有变化啦。

时间: 2024-10-23 19:42:26

Django管理后台的搭建的相关文章

Python Django管理后台美化

前言:   默认的系统后台不仅界面难看,而且还暴露系统框架信息,有一定的安全隐患, Django常见的后台模版有django-xadmin,Grappelli,Django Suit等,当然也可以自已开发一个. 下面是今天所讲Grappelli的配置方法. 配置:        pip安装grappelli pip install django-grappelli settings.py中添加 INSTALLED_APPS = ( 'grappelli',     #必须在'django.con

学生成绩管理后台第二项任务:初步建模,搭建一个简单的网站

负责人:程琳茹 合伙人:李玉婷 签约员工:闫玉荣 前言:学生成绩管理后台,看起来是一个简单的项目,但是对于我们今后的发展很重要,建设一个管理后台有很多方法,这里我们主要使用Rstudio,在之后的文章中,会详细给出我们小组完成项目的过程与遇到的问题,欢迎大家借鉴,此外,同学们要积极参与讨论. 项目步骤:1.熟悉与安装Rstudio,并且配置好R内部环境. 2.建立好文件所存放的位置与确保文档可以正常使用. 3.搭建一个简单的网站,分别分为server.R端口与ui.R端口. 4.搭建好网站后,插

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

http://blog.csdn.net/pipisorry/article/details/45079751 上篇:Django项目实践3 - Django模型 Introduction 对于某一类站点, 管理界面 是基础设施中很重要的一部分. 这是以网页和有限的可信任管理者为基础的界面,它能够让你加入,编辑和删除站点内容. 常见的样例: 你能够用这个界面公布博客,后台的站点管理者用它来润色读者提交的内容,你的客户用你给他们建立的界面工具更新新闻并公布在站点上.这些都是使用管理界面的样例. 创

Django Admin Cookbook-17如何仅限特定用户登录Django Admin管理后台

17.如何仅限特定用户登录Django Admin管理后台? 只有勾选了is_staff=True的用户才允许登录Django Admin管理后台.要禁止用户访问Admin后台,可以应该设置该用户is_staff=False. 同样,超级管理员可以通过is_superuser=True设置.如果is_staff=False的用户尝试登录管理后台,将看到如下消息. 返回目录 原文地址:https://www.cnblogs.com/superhin/p/12174549.html

Django开发博客系统(07-根据需求定制管理后台)

运行系统尝试添加用户并添加数据,出现的效果 可以看到当前登录的用户虽然是DOCTOR,但依然可以看到其他用户的文章,而且过滤器上也展示了非当前用户创建的分类,显然这是一个需要我们解决的问题. 首先解决右侧过滤器的功能,这时需要自定义过滤器,这里贴上文档中的说明 接下来我们就来编写自定义过滤器的代码: 1 class CategoryOwnerFilter(admin.SimpleListFilter): 2 """自定义过滤器只展示当前用户分类""&quo

Django里,如何更改ADMIN管理后台的显示

今天在慢慢完善管理后台的一些体验, 第一是要扩展默认显示类,就是现在弄的. 第二是要让一些显示框更自然友好,这是下一次要作的. 在各个app的admin.py里,加入相关的MIXIN类 class ServerAdmin(admin.ModelAdmin): list_display = ('name', 'ipaddress', 'server_env', 'status') search_fields = ['name'] admin.site.register(Server, Server

《暗黑世界GM管理后台系统》部署+功能说明文档

(一)功能描述 该后台共分为三大部分:服务器管理.单服数据统计和扶持账号管理. 1.服务器管理: 根据管理后台数据库中填写的服务器信息(后面会讲到如何填写要管理的服务器的信息到数据库中),该部分可以看到所有服务器的名称,ip地址,开服时间以及开启状况,其中对服务器的开启.关闭功能尚未开放.在运营商及服务器后面的下拉列表中可根据需求选择对应的游戏服务器进行管理. 2.单服数据统计: 同上,需要先在运营商及服务器后面的下拉列表中选择对应的服务器,才可查看相应服务器的信息. 这部分分为单日的详细数据和

thinkphp 后台的搭建

前面说过前台的初步搭建,现在来写一写后台的搭建 tp中的前台搭建和后台搭建差不多类似,分工比较明确 先说一个后台分组的设置吧 前台有的功能 后台也差不多拥有 所以,现在在shop文件夹下,新建一个后台Admin文件夹,放置后台代码 并在Admin下创建需要的文件夹存放需要的代码 在controller里创建需要的php代码 同样输入和以前所说的固定格式(注意变换名称) 然后创建后台的静态页面,和前台是一样的 之后界面内容就会显示出来,样式不会醋来.接下来就开始修改路径显示样式和图片 后台的静态资

【开源】OSharp框架解说系列(2.1):EasyUI的后台界面搭建及极致重构

〇.前言 要了解一个东西长什么样,至少得让我们能看到,才能提出针对性的见解.所以,为了言之有物,而不是凭空漫谈,我们先从UI说起,后台管理页面的UI我们将使用应用比较普遍的easyui框架. 以前在用easyui的时候,每个页面都得从0做起,或者不厌其烦地由以前的页面通过“复制-粘贴”的方式来修改,久页久之,就会造成页面庞大且难以维护.其实,前端的html,javascript代码与后端的代码是一样的,通过一定的组织,把重复的代码抽离出来,同样也通过达到很好的复用率.而MVC的天生的Layout