使用django 开发数据采集平台操作界面

原创 tiangr  2017-01-18 17:43  阅读 188 次

环境 - Django版本1.10.5,Python版本3.5.1

下载安装django

  1. pip install django

开始一个新项目,并且安装一个app应用

  1. python manage.py startproject ant
  2. python manage.py startapp tasks

将安装的app 名称放置setting.py中

  1. INSTALLED_APPS = [
  2.     'django.contrib.admin',
  3.     'django.contrib.auth',
  4.     'django.contrib.contenttypes',
  5.     'django.contrib.sessions',
  6.     'django.contrib.messages',
  7.     'django.contrib.staticfiles',
  8.     'tasks',
  9. ]

配置Mysql数据库

  1. DATABASES = {
  2.     'default': {
  3.         'ENGINE': 'django.db.backends.mysql',
  4.         'HOST': '127.0.0.1',
  5.         'USER': 'root',
  6.         'PASSWORD': '',
  7.         'PORT': '3306',
  8.         'NAME': 'ant_release',
  9.         'OPTIONS': {
  10.             'init_command': "SET sql_mode='STRICT_TRANS_TABLES'"
  11.         }
  12.     }
  13. }

接下来是利用django自带的shell创建数据表,打开文件 /foo/bar/ant/tasks/models.py

  1. from django.db import models
  2. class Task(models.Model):
  3.     name = models.CharField("采集任务名称", max_length=300)
  4.     add_date = models.DateTimeField("添加日期", auto_now_add=True)
  5. class Category(models.Model):
  6.     url = models.URLField("来源分类URL链接", max_length=325, blank=True)
  7.     name = models.CharField("文章分类名称", max_length=300)
  8.     add_date = models.DateTimeField("The date time of category added", auto_now_add=True)
  9. class Article(models.Model):
  10.     url = models.URLField(max_length=325, blank=True, verbose_name='来源文章URL链接')
  11.     title = models.CharField("文章标题", max_length=600)
  12.     content = models.TextField("文章内容")
  13.     add_date = models.DateTimeField("添加日期", auto_now_add=True)
  14.     category = models.ForeignKey(Category, null=True, blank=True, verbose_name="文章分类")
  15.     task = models.ForeignKey(Task, null=True, blank=True, verbose_name="采集任务")
  16. class Tag(models.Model):
  17.     name = models.CharField("标签", max_length=300)
  18.     add_date = models.DateTimeField("添加日期", auto_now_add=True)
  19.     articles = models.ManyToManyField(Article)
  20. class Meta(models.Model):
  21.     key = models.CharField("元数据键", max_length=64)
  22.     value = models.TextField("元数据值")
  23.     serialized = models.BooleanField("是否经过JSON编码过", default=0)
  24.     add_date = models.DateTimeField("添加日期", auto_now_add=True)
  25.     article = models.ForeignKey(Article)
  26. class Setting(models.Model):
  27.     code = models.CharField("配置代码", max_length=32, default='config')
  28.     key = models.CharField("配置键", max_length=64)
  29.     value = models.TextField("配置值")
  30.     serialized = models.BooleanField("是否经过JSON编码过", default=0)
  31.     task = models.ForeignKey(Task, null=True, blank=True, verbose_name="采集任务")

注意:

虽然blank=True可以让字段变成可选,并且同样适用于日期型和数字型字段,但是这里需要详细讲解一些背景知识。

SQL有指定空值的独特方式,它把空值叫做NULL。NULL可以表示为未知的、非法的、或其它程序指定的含义。

在SQL中, NULL的值不同于空字符串,就像Python中None不同于空字符串("")一样。这意味着某个字符型字段(如VARCHAR)的值不可能同时包含NULL和空字符串。

这会引起不必要的歧义或疑惑。 为什么这条记录有个NULL,而那条记录却有个空字符串? 它们之间有区别,还是数据输入不一致? 还有: 我怎样才能得到全部拥有空值的记录,应该按NULL和空字符串查找么?还是仅按字符串查找?

为了消除歧义,Django生成CREATE TABLE语句自动为每个字段显式加上NOT NULL。

在大多数情况下,这种默认的行为对你的应用程序来说是最佳的,因为它可以使你不再因数据一致性而头痛。 而且它可以和Django的其它部分工作得很好。如在管理工具中,如果你留空一个字符型字段,它会为此插入一个空字符串(而不是 NULL)。

但是,其它数据类型有例外:日期型、时间型和数字型字段不接受空字符串。 如果你尝试将一个空字符串插入日期型或整数型字段,你可能会得到数据库返回的错误,这取决于那个数据库的类型。 (PostgreSQL比较严禁,会抛出一个异常;MySQL可能会也可能不会接受,这取决于你使用的版本和运气了。)在这种情况下,NULL是唯一指定空值的方法。 在Django模块中,你可以通过添加null=True来指定一个字段允许为NULL。

因此,这说起来有点复杂: 如果你想允许一个日期型(DateField、TimeField、DateTimeField)或数字型(IntegerField、DecimalField、FloatField)字段为空,你需要使用null=True blank=True。

在项目目录下执行命令行

  1. python manage.py makemigrations tasks
  2. python manage.py migrate tasks

这样就自动生成了你models写入的新表。

如果你反复配置models时出现了错误,想要还原,可以采取下面的方法:

删除app目录下的 migrations 子目录。

执行SQL,DELETE FROM django_migrations WHERE app = <your app name>,删除相关的数据库操作记录。

然后执行:

  • python manage.py makemigrations
  • python manage.py migrate --fake

我们可以使用Django自带的包生成一个admin后台,创建超级用户

  1. python manage.py createsuperuser

浏览器输入地址:http://127.0.0.1:8000/admin/登录后可以看见下面的页面

特别提示:本站资源全部免费下载,因服务器需经费维护,文中部分外链点击后会进入广告,请耐心等待5秒即可跳过广告进入目标页面。如遇页面外链打不开或下载地址失效,您可以在评论中指出错误,或扫描页面底部二维码。
本文地址:http://www.tiangr.com/shi-yong-django-kai-fa-cai-ji-ping-tai-cao-zuo-jie-mian.html
版权声明:本文为原创文章,版权归 tiangr 所有,欢迎分享本文,转载请保留出处!

发表评论


表情