设为首页 收藏本站
查看: 1401|回复: 0

[经验分享] Django开发 (二) 连接到数据库与网站后台管理

[复制链接]

尚未签到

发表于 2016-11-22 07:20:25 | 显示全部楼层 |阅读模式
   
      在Web程序中难免要与数据库打交道,django目前支持四种数据库

      1、PostgreSQL
         需要安装psycopg

      2、SQLite 3   SQLite3是一个本地数据库,类似于access,可以使用SQLite-manager来管理。
         在Django下面使用SQLite需要安装pysqllite,点击这里直接下载pysqlite-2.4.1.win32-py2.5.exe
[/td]
      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为空

数据库引擎设置设置数据库适配器postgresqlPostgreSQLpsycopg 版本 1.x, http://www.djangoproject.com/r/python-pgsql/1/.postgresql_psycopg2PostgreSQLpsycopg 版本 2.x, http://www.djangoproject.com/r/python-pgsql/.mysqlMySQLMySQLdb , http://www.djangoproject.com/r/python-mysql/.sqlite3SQLitePython 2.5+ 内建。 其他, pysqlite , http://www.djangoproject.com/r/python-sqlite/.ado_mssqlMicrosoft SQL Serveradodbapi 版本 2.0.1+, http://www.djangoproject.com/r/python-ado/.oracleOraclecx_Oracle , http://www.djangoproject.com/r/python-oracle/.

      2、创建model

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

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

          model.py的代码:

Code
# -*- coding: utf-8 -*-
#import time
from django.db import models
from django.contrib import admin

# Create your models here.

_list_per_page = 50

# Article
class Article(models.Model):
    id = models.AutoField(
        primary_key = True,
        core = True,
    )
    title = models.CharField(
        max_length = 50,
    )
    summanry = models.TextField(
        blank = True,
        null = True,
    )
    content = models.TextField()
    addtime = models.DateTimeField(
        auto_now_add = True,
        core = True,
    )
    def addtime_format(self):
        return self.addtime.strftime('%Y-%m-%d %H:%M:%S')
   
    def __unicode__(self):
        return self.title
   

class ArticleAdmin(admin.ModelAdmin):
    list_display = ('id','title','addtime_format')
    list_display_links = ('id','title')
    _list_per_page = _list_per_page

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

#分别给Article,Reply类注册使他们可以在后台管理
admin.site.register(Article,ArticleAdmin)
admin.site.register(Reply,ReplyAdmin)
     

好了,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/进入网站后台管理~

DSC0003.gif

DSC0004.gif

DSC0005.png

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-303659-1-1.html 上篇帖子: SQLITE操作笔记 下篇帖子: 安装MediaWiki
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表