`

django-blog(二)设置mysql数据库并创建模型

 
阅读更多

vim blogproject/settings.py

 

修改DATABASES 

 

DATABASES = {

    'default': {

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

        'NAME': 'blogdb',

        'USER':'buser',

        'PASSWORD':'123456',

        'HOST':'192.168.0.68',

        'PORT':'3355',

    }

}

 

创建models

 

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

from django.db import models

from django.contrib.auth.models import AbstractUser

 

# 用户模型. 

class User(AbstractUser):

    avatar = models.ImageField(upload_to='avatar/%Y/%m', default='avatar/default.png', max_length=200, blank=True, null=True, verbose_name='用户头像')

    qq = models.CharField(max_length=20, blank=True, null=True, verbose_name='QQ号码')

    mobile = models.CharField(max_length=11, blank=True, null=True, unique=True, verbose_name='手机号码')

 

    class Meta:

        verbose_name = '用户'

        verbose_name_plural = verbose_name

        ordering = ['-id']

 

    def __unicode__(self):

        return self.username

 

# 标签

class Tag(models.Model):

    name = models.CharField(max_length=30, verbose_name='标签名称')

 

    class Meta:

        verbose_name = '标签'

        verbose_name_plural = verbose_name

        ordering = ['id']

 

    def __unicode__(self):

        return self.name

 

# 文章分类

class Category(models.Model):

    name = models.CharField(max_length=30, verbose_name='分类名称')

    index = models.IntegerField('显示顺序(从小到大)',default=999)

 

    class Meta:

        verbose_name = '分类'

        verbose_name_plural = verbose_name

        ordering = ['index', 'id']

 

    def __unicode__(self):

        return self.name

 

# 文章模型

class Article(models.Model):

    title = models.CharField(max_length=50, verbose_name='文章标题')

    desc = models.CharField(max_length=50, verbose_name='文章描述')

    content = models.TextField(verbose_name='文章内容')

    click_count = models.IntegerField(default=0, verbose_name='点击次数')

    is_recommend = models.BooleanField(default=False, verbose_name='是否推荐')

    date_publish = models.DateTimeField(auto_now_add=True, verbose_name='发布时间')

    user = models.ForeignKey(User, verbose_name='用户')

    category = models.ForeignKey(Category, blank=True, null=True, verbose_name='分类')

    tag = models.ManyToManyField(Tag, verbose_name='标签')

 

    class Meta:

        verbose_name = '文章'

        verbose_name_plural = verbose_name

        ordering = ['-date_publish']

 

    def __unicode__(self):

        return self.title

 

# 评论模型

class Comment(models.Model):

    content = models.TextField(verbose_name='评论内容')

    date_publish = models.DateTimeField(auto_now_add=True, verbose_name='发布时间')

    user = models.ForeignKey(User, blank=True, null=True, verbose_name='用户')

    article = models.ForeignKey(Article, blank=True, null=True, verbose_name='文章')

    pid = models.ForeignKey('self', blank=True, null=True, verbose_name='父级评论')

 

    class Meta:

        verbose_name = '评论'

        verbose_name_plural = verbose_name

        ordering = ['-date_publish']

 

    def __unicode__(self):

        return str(self.id)

 

# 友情链接

class Links(models.Model):

    title = models.CharField(max_length=50, verbose_name='标题')

    description = models.CharField(max_length=200, verbose_name='友情链接描述')

    callback_url = models.URLField(verbose_name='url地址')

    date_publish = models.DateTimeField(auto_now_add=True, verbose_name='发布时间')

    index = models.IntegerField(default=999, verbose_name='排列顺序(从小到大)')

 

    class Meta:

        verbose_name = '友情链接'

        verbose_name_plural = verbose_name

        ordering = ['index', 'id']

 

    def __unicode__(self):

        return self.title

 

# 广告

class Ad(models.Model):

    title = models.CharField(max_length=50, verbose_name='广告标题')

    description = models.CharField(max_length=200,  verbose_name='广告描述')

    image_url = models.ImageField(upload_to='ad/%Y/%m', verbose_name='图片路径')

    callback_url = models.URLField(null=True, blank=True, verbose_name='回调url')

    date_publish = models.DateTimeField(auto_now_add=True, verbose_name='发布时间')

    index = models.IntegerField(default=999, verbose_name='排列顺序(从小到大)')

 

    class Meta:

        verbose_name = u'广告'

        verbose_name_plural = verbose_name

        ordering = ['index', 'id']

 

    def __unicode__(self):

        return self.title

 

    class Meta:

        verbose_name = u'广告'

        verbose_name_plural = verbose_name

        ordering = ['index', 'id']

 

    def __unicode__(self):

        return self.title

 

 

加入自定义用户模型

vim blogproject/settings.py

 

AUTH_USER_MODEL = 'blog.User'

 

设置完毕,同步数据

python manage.py makemigrations blog

python manage.py migrate

 

 

 

 

 

分享到:
评论

相关推荐

    Django-1.2.5.tar.gz

    - ORM(对象关系映射):Django的ORM允许开发者使用Python代码来操作数据库,无需编写SQL语句,支持多种数据库系统如SQLite、MySQL、PostgreSQL等。 - URL调度器:Django的URLconfs(URL配置)系统使URL设计变得灵活...

    Django博客项目源码+mysql数据库

    【Django博客项目源码+mysql数据库】是一个适合新手学习的实践项目,它结合了流行的Python Web框架Django和关系型数据库MySQL。这个项目提供了一整套完整的源代码,可以帮助初学者快速理解如何构建一个基于Django的...

    PyPI 官网下载 | django-mysql-1.1.0.tar.gz

    **标题与描述解析** ...通过PyPI下载并安装此库,开发者能够更好地利用MySQL数据库的优势,同时保持Django的优雅和效率。在实际项目中,了解并合理运用这些特性,可以提升Web应用的性能和可维护性。

    Python库 | django-mysql-2.2.2.tar.gz

    `django-mysql-2.2.2.tar.gz` 是一个针对Python编程语言的压缩包文件,主要用于拓展Django框架与MySQL数据库之间的集成。这个库提供了更高级的功能和优化,使得在使用Django开发后端应用程序时,能够更好地利用MySQL...

    django第一个项目连接mysql数据库实现注册登录

    在本教程中,我们将深入探讨如何使用Django框架创建第一个项目,并将其与MySQL数据库集成以实现用户注册和登录功能。Django是一个强大的Python Web开发框架,而MySQL则是一种广泛使用的开源关系型数据库管理系统。让...

    django-vue-admin-pro-master.zip

    3. 创建数据库模型:使用Django的`makemigrations`和`migrate`命令。 4. 启动Vue.js开发服务器:在Vue.js项目根目录下运行`npm run serve`。 5. 启动Django服务器:在项目根目录下运行`python manage.py runserver`...

    Python库 | django-microsip-base-1.0.5.zip

    开发人员在使用`django-microsip-base` 时,需要熟悉Django的基本操作,包括安装依赖、配置项目、创建模型、编写视图和模板等。在部署时,通常会涉及到选择合适的Web服务器(如Gunicorn或uWSGI)、数据库服务器(如...

    Django-Stu-master.zip

    在这个项目中,可能使用了pymysql库与MySQL数据库进行交互,实现数据的CRUD(创建、读取、更新、删除)操作。 4. **视图(View)**:视图是处理用户请求并返回响应的部分。视图函数或类接收HTTP请求,处理相关逻辑...

    Django-blog.zip

    综上所述,“Django-blog”项目是一个典型的Django应用实例,它展示了如何利用Python的Django框架、MySQL数据库、jQuery和Bootstrap前端技术,构建一个具备基本功能的博客系统。这样的项目对于初学者来说,是一个很...

    django-mssql-1.4.zip

    通过这个扩展,你可以使用Django的ORM(对象关系映射)系统,就像在处理其他受支持的数据库(如SQLite、MySQL或PostgreSQL)一样,无需深入理解SQL Server的底层细节。 安装与配置是使用"django-mssql-1.4"的关键...

    Django读取Mysql数据并显示在前端的实例

    总结一下,这个实例展示了如何在Django中连接MySQL数据库,创建模型,同步数据库,定义视图,设置URL路由,以及在模板中显示数据。这个过程是Django进行数据驱动开发的基础,可以帮助你构建复杂的数据展示和交互功能...

    Django-Blog

    Django-Blog项目可能使用了SQLite、MySQL或PostgreSQL作为后端数据库。 9. **静态文件与媒体文件** Django管理静态文件(如CSS、JavaScript、图片等)和用户上传的媒体文件。在生产环境中,这些文件通常会被单独...

    python使用Django库向mysql数据库插入数据

    这个过程涵盖了使用Python Django框架与MySQL数据库交互的基本步骤,包括模型定义、数据库配置、视图函数创建、HTML表单以及URL路由。对于初学者或有一定基础的开发者来说,这是一个很好的实践项目,有助于理解Web...

    django-simple-multitenant:Django 模型的简单多租户 mixin

    这是在数据库表(django 模型)级别完成的。 核心是一个名为 Tenant 的模型,只有两个字段:姓名和电子邮件。 通过添加指向该租户模型的 ForeignKey 字段,可以使 django 项目中的任何其他模型成为“租户感知”。 ...

    Django-1.3.3安装文件

    9. **数据库操作**:Django支持多种数据库,如SQLite、MySQL、PostgreSQL等,通过更改`settings.py`中的DATABASES配置,可以轻松切换。 10. **中间件(Middleware)**:中间件是Django提供的一种全局请求/响应处理...

    Django-1.0.2-final

    通过`models.py`文件创建模型类,Django会自动生成数据库表,提供CRUD(创建、读取、更新、删除)操作。 4. **URL调度器(URL Routing)** Django的URLconf系统允许开发者通过正则表达式定义URL模式,将URL映射到...

    Django-0.96.tar.gz

    8. **数据库支持**:Django支持多种数据库引擎,包括SQLite、MySQL、PostgreSQL和Oracle,这提供了良好的数据库选择灵活性。 9. **社区和文档**:Django拥有庞大的开发者社区和详尽的官方文档,无论是初学者还是...

    Python库 | wc-django-geo-db-0.1.5.tar.gz

    总的来说,wc-django-geo-db是Python和Django开发者处理地理数据的利器,它简化了数据库集成,并为创建地理信息相关的Web应用提供了便利。通过深入理解和有效利用这个库,开发者能够提升项目的效率和专业性。

    Django引用ztree实现数据库表导入树状目录

    通过配置settings.py文件中的DATABASES设置,我们可以将Django项目连接到MySQL数据库。在本例中,我们需要从数据库中读取数据表,这可以通过Django的ORM(对象关系映射)系统实现,它允许我们以Python对象的方式操作...

    Python库 | django-static-sitemaps-2.0.1.tar.gz

    这个库可以帮助开发者方便地创建并维护适用于搜索引擎优化(SEO)的XML站点地图,确保网站的页面能够被搜索引擎有效地索引。在`django-static-sitemaps-2.0.1.tar.gz`这个压缩包中,包含了该库的源代码和其他相关...

Global site tag (gtag.js) - Google Analytics