zoukankan      html  css  js  c++  java
  • Django项目流程

    • 创建项目和应用

    django-admin.py startproject project_name
    cd project_name
    python manage.py startapp app_name

    添加 app_name 到 settings.py 中的 INSATLLED_APPS 中。

    • 规划写models.py

    示例:

    from __future__ import unicode_literals
     
    from django.db import models
    from django.utils.encoding import python_2_unicode_compatible
     
     
    @python_2_unicode_compatible
    class Column(models.Model):
        name = models.CharField('栏目名称', max_length=256)
        slug = models.CharField('栏目网址', max_length=256, db_index=True)
        intro = models.TextField('栏目简介', default='')
     
        def __str__(self):
            return self.name
     
        class Meta:
            verbose_name = '栏目'
            verbose_name_plural = '栏目'
            ordering = ['name']  # 按照哪个栏目排序
     
     
    @python_2_unicode_compatible
    class Article(models.Model):
        column = models.ManyToManyField(Column, verbose_name='归属栏目')
     
        title = models.CharField('标题', max_length=256)
        slug = models.CharField('网址', max_length=256, db_index=True)
     
        author = models.ForeignKey('auth.User', blank=True, null=True, verbose_name='作者')
        content = models.TextField('内容', default='', blank=True)
     
        published = models.BooleanField('正式发布', default=True)
     
        def __str__(self):
            return self.title
     
        class Meta:
            verbose_name = '教程'
            verbose_name_plural = '教程'
    • 创建数据库

    python manage.py makemigrations news
    python manage.py migrate
    • 更改models.py

    对models.py进行更改后,更改字段数据库中没有,需要同步更改到数据库中。

    python manage.py makemigrations news

    后续操作:

    You are trying to add a non-nullable field 'pub_date' to article without a default; we can't do that (the database needs something to populate existing rows).

    Please select a fix:

     1) Provide a one-off default now (will be set on all existing rows)

     2) Quit, and let me add a default in models.py

    这段话的意思是 pub_date 字段没有默认值,而且非Null 那么 

    1) 指定一个一次性的值供更改数据库时使用。

    2) 停止当前操作,在 models.py 中给定默认值,然后再来migrate。

    我们选择第一个,输入 1

    Select an option: 1

    Please enter the default value now, as valid Python

    The datetime and django.utils.timezone modules are available, so you can do e.g. timezone.now()

    >>> timezone.now()

    Migrations for 'news':

      0002_auto_20150728_1232.py:

        - Add field pub_date to article

        - Add field update_time to article

    这样是生成了一个对表进行更改的 py 文件在 news/migrations 文件夹中,我们要执行更改

    python manage.py migrate 或 python manage.py migrate news
    • 创建脚本,导入数据到数据库中

    示例:

    '''
    create some records for demo database
    '''
     
    from minicms.wsgi import *
    from news.models import Column, Article
     
     
    def main():
        columns_urls = [
          ('体育新闻', 'sports'),
          ('社会新闻', 'society'),
          ('科技新闻', 'tech'),
        ]
     
        for column_name, url in columns_urls:
            c = Column.objects.get_or_create(name=column_name, slug=url)[0]
     
            # 创建 10 篇新闻
            for i in range(1, 11):
                article = Article.objects.get_or_create(
                    title='{}_{}'.format(column_name, i),
                    slug='article_{}'.format(i),
                    content='新闻详细内容: {} {}'.format(column_name, i)
                )[0]
     
                article.column.add(c)
     
     
    if __name__ == '__main__':
        main()
        print("Done!")

    运行脚本 导入数据:

    python create_demo_records.py
  • 相关阅读:
    MysqlServer如何实现成功卸载,并成功安装
    win7安装xampp,提示windows找不到-n文件(安装成功后,443端口占用,apache服务器无法正常启动)
    (JS实现顾客商品浏览记录以及购物车)Cookie的保存与删除
    (转)SVN 服务端、客户端安装及配置、导入导出项目
    正则表达式详解
    Struts2.3.4+Hibernate4.2.4+Mysql6.0整合
    CSS中TRBL和position关系
    const typedef #define
    数组的替代品
    输入
  • 原文地址:https://www.cnblogs.com/dear_diary/p/5782680.html
Copyright © 2011-2022 走看看