Django开发 (二) 连接到数据库与网站后台管理

   
      在Web程序中难免要与数据库打交道,django目前支持四种数据库

      1、PostgreSQL
         需要安装psycopg

      2、SQLite 3   SQLite3是一个本地数据库,类似于access,可以使用SQLite-manager来管理。
         在Django下面使用SQLite需要安装pysqllite,点击这里直接下载pysqlite-2.4.1.win32-py2.5.exe 

      3、MySQL    
         版本为1.2.1p2或者更高的MySQL需要安装MySQLdb,
      4、Oracle
         版本为 4.3.1 或者更高的Oracle需要安装cx_Oracle
      
       
对于SQL Server的数据库引擎支持工作尚未完成

      本文已最简单的SqlLite为例进行介绍,希望能起到抛砖引玉的效果.

      1、 数据库的配置

            根据上一章创建一个名为myblog的项目
            打开根目录下的settings.py文件,编辑如下配置:            
               DATABASE_ENGINE = 'sqlite3'           # 数据库引擎               
               DATABASE_NAME = './db/blog.sqlite'             # 数据库名字,若是sqlite,则制定数据库文件路径               
               DATABASE_USER = ''             # 用户名,sqlite为空
               DATABASE_PASSWORD = ''         # 密码,sqlite为空
               DATABASE_HOST = ''             # 数据库服务器地址,sqlite为空
               DATABASE_PORT = ''             # 端口,sqlite为空 

设置 数据库 适配器 postgresql PostgreSQL psycopg 版本 1.x, http://www.djangoproject.com/r/python-pgsql/1/ . postgresql_psycopg2 PostgreSQL psycopg 版本 2.x, http://www.djangoproject.com/r/python-pgsql/ . mysql MySQL MySQLdb , http://www.djangoproject.com/r/python-mysql/ . sqlite3 SQLite Python 2.5+ 内建。 其他, pysqlite , http://www.djangoproject.com/r/python-sqlite/ . ado_mssql Microsoft SQL Server adodbapi 版本 2.0.1+, http://www.djangoproject.com/r/python-ado/ . oracle Oracle cx_Oracle , http://www.djangoproject.com/r/python-oracle/ .

      2、创建model

         在根目录下创建mvc文件夹,在mvc下分别创建models.py, __init__.py文件
         django把每个具有 __init__.py文件的文件夹看成一个命名空间,在根目录下需要添加他的引用,在 setting.py找到

  ContractedBlock.gif ExpandedBlockStart.gif Code
None.gif  INSTALLED_APPS = (
None.gif    
'django.contrib.auth',
None.gif    
'django.contrib.contenttypes',
None.gif    
'django.contrib.sessions',
None.gif    
'django.contrib.sites',
None.gif    
'django.contrib.admin',  #先加上这个,后面创建网站后台管理要用
None.gif
    'myblog.mvc'#在这儿加上mvc的引用
None.gif
)

          model.py的代码:

ContractedBlock.gif ExpandedBlockStart.gif Code
None.gif# -*- coding: utf-8 -*-
None.gif#
import time
None.gif
from django.db import models
None.gif
from django.contrib import admin
None.gif
None.gif
# Create your models here.
None.gif

None.gif_list_per_page 
= 50
None.gif
None.gif
# Article
None.gif
class Article(models.Model):
None.gif    id 
= models.AutoField(
None.gif        primary_key 
= True,
None.gif        core 
= True,
None.gif    ) 
None.gif    title 
= models.CharField(
None.gif        max_length 
= 50,
None.gif    )
None.gif    summanry 
= models.TextField(
None.gif        blank 
= True,
None.gif        null 
= True,
None.gif    )
None.gif    content 
= models.TextField() 
None.gif    addtime 
= models.DateTimeField(
None.gif        auto_now_add 
= True,
None.gif        core 
= True,
None.gif    )
None.gif    
def addtime_format(self):
None.gif        
return self.addtime.strftime('%Y-%m-%d %H:%M:%S')
None.gif    
None.gif    
def __unicode__(self):
None.gif        
return self.title
None.gif    
None.gif
None.gif
class ArticleAdmin(admin.ModelAdmin):
None.gif    list_display 
= ('id','title','addtime_format')
None.gif    list_display_links 
= ('id','title')
None.gif    _list_per_page 
= _list_per_page
None.gif
None.gif
class Reply(models.Model):
None.gif    id 
= models.AutoField(
None.gif        primary_key 
= True,
None.gif        core 
= True,
None.gif    )
None.gif    title 
= models.CharField(
None.gif        max_length 
= 50,
None.gif    )
None.gif    
None.gif    author 
= models.CharField(
None.gif        max_length 
= 10,
None.gif    )
None.gif    email 
= models.EmailField()
None.gif    homepage 
= models.URLField()
None.gif    article 
= models.ForeignKey(Article) #创建外键
None.gif
    addtime = models.DateTimeField(
None.gif        auto_now_add 
= True,
None.gif    )
None.gif    content 
= models.TextField()
None.gif    
None.gif    
def addtime_format(self):
None.gif        
return self.addtime.strftime('%Y-%m-%d %H:%M:%S'#格式化时间的方法
None.gif
    
None.gif    
def __unicode__(self):
None.gif        
return self.title #每个类型都应该由一个__unicode__方法,类似于.net中的 objectA.ToString()显示出来的东西
None.gif
    
None.gif
class ReplyAdmin(admin.ModelAdmin):
None.gif    list_display 
= ('id','title','author','email','homepage','article','addtime_format'#列表显示的字段
None.gif
    list_display_links = ('id','title'#列表中可点击进入编辑的链接字段
None.gif
    ordering = ["-addtime"#排序
None.gif
    search_fields = ('title','author'#可搜索的字段
None.gif
    list_filter = ('email',) #过滤条件
None.gif
    _list_per_page = _list_per_page
None.gif
None.gif
#分别给Article,Reply类注册使他们可以在后台管理
None.gif
admin.site.register(Article,ArticleAdmin)
None.gifadmin.site.register(Reply,ReplyAdmin)
None.gif     


好了,model都创建好了,下面生成数据库

      3、生成数据库

         打开命令行,进入项目所在的文件夹输入 manage.py syncdb ,它会提示你
            You just installed Django's auth system, which means you don't have any superusers defined.
            Would you like to create one now? (yes/no):
         大概的意思是是否创建django自带的网站后台管理程序的数据库,选择yes, 然后根据提示设置好用用户名和密码等
         该操作后你可以在配置的数据库文件夹下看到生成的数据库
                  
      4、测试数据连接
         运行命令行 python manage.py shell 
         输入下面这些命令来测试你的数据库配置:
         >>> from django.db import connection
         >>> cursor = connection.cursor()

         如果没有显示什么错误信息,那么你的数据库配置是正确的

      5、配置urls.py

           打开urls.py,在顶上加上 from django.contrib import admin
            在patterns添加一项 (r'^admin/(.*)',admin.site.root),

好了 现在在命令行输入 manage.py runserver 启动web服务
浏览器打开http://127.0.0.1:8000/admin/进入网站后台管理~

r_aa.gif

r_z111111111111111.gif

r_4.png



转载于:https://www.cnblogs.com/qiuyun8m/archive/2008/08/05/1260548.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值