Django学习系列(二)--第一个App

本文部分参照https://docs.djangoproject.com/en/1.6/intro/tutorial01/

如有错误请不吝赐教,非常感谢。

本机环境:

    操作系统:Ubuntu12.04

    python2.7.3

    Django-1.6.1

一.关于Django

    Django是一个Web开发框架,提供了划分明晰的MVC开发模型,最具吸引力的是其orm、admin模块、模板引擎,code generate可以为开发工作节省相当可观的时间。

一.创建工程

   1.创建一个Project

     

john@john-pad:~/python_workspace/web$ django-admin.py startproject website

工程目录结构是这样的:

         website

                  manage.py

                  website

                           __init__.py

                           settings.py

                           urls.py

                           wsgi.py

django1.6之后,工程的目录结构变成当前的形式,而之前版本的目录结构可能是这样的

        website

                manage.py

                __init__.py

                urls.py

                settings.py

 django1.6项目的顶层目录只是一个容器而已,毋须在意。

 现在就可以启动server访问工程了:

  

john@john-pad:~/python_workspace/web/website$ python manage.py runserver
Validating models...

0 errors found
January 20, 2014 - 02:43:39
Django version 1.6.1, using settings 'website.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

如下显示表明启动成功

2.修改数据库连接、语言、时区

  打开website/website/settings.py,修改以下几处:

  a.数据库:本机用的是mysql数据库

  DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'website',
        'USER': 'root',
        'PASSWORD':'root',
        'HOST':'127.0.0.1',
        'PORT':3306
     }
   }

   请酌情修改name\user\password\host\port几项

   b.语言编码

      LANGUAGE_CODE = 'zh-cn'

    c.时区

       TIME_ZONE = 'Asia/Shanghai'

保存重启server

3.同步数据库

    

python manage.py syncdb

需要输入一个系统管理员帐号及密码


4.登录管理界面

  使用第3步创建的管理员登录管理界面

 
二.创建App-etlweb

 在本例中,我们创建一个管理数据传输任务的app

   1.在website目录执行:

  

django-admin.py startapp etlweb

etlweb的目录结构如下:

etlweb/
    __init__.py
    admin.py
    models.py
    tests.py
    views.py

   2.创建model

    我们将创建两个类:Task(传输任务) 、TaskCode(传输任务的执行代码)

    打开website/etlweb/models.py,添加:

  

#*-*coding:UTF-8 *-*

from django.db import models
from django.contrib.auth.models import User


class TaskCode(models.Model):
        name = models.CharField(max_length=32,verbose_name='名称')
        content = models.TextField(verbose_name='内容')
        creator = models.ForeignKey(User,verbose_name='创建人')
        create_time = models.DateTimeField(auto_now=True,verbose_name='创建时间')

        def __unicode__(self):
                return self.name

        class Meta:
                verbose_name='任务代码'
                verbose_name_plural = '任务代码'
class Task(models.Model):
        task_name = models.CharField(max_length=32,verbose_name='任务名称')
        task_code = models.ForeignKey(TaskCode,verbose_name='任务代码')
        creator = models.ForeignKey(User,verbose_name='创建人')
        create_time = models.DateTimeField(auto_now=True,verbose_name='创建时间')
        description = models.CharField(max_length=256,verbose_name='任务描述')

        def __unicode__(self):
                return self.task_name

        class Meta:
                verbose_name='任务'
                verbose_name_plural='任务'

3.注册到admin模块

   打开website/etlweb/admin.py,添加:

 

from models import Task,TaskCode
from django.contrib import admin

class TaskCodeAdmin(admin.ModelAdmin):
        list_display = ('name','creator','create_time',)
        
class TaskAdmin(admin.ModelAdmin):
        list_display = ('task_name','creator','create_time')

admin.site.register(TaskCode,TaskCodeAdmin)
admin.site.register(Task,TaskAdmin)

 打开website/website/settings.py,在INSTALLED_APPS元组中添加'etlweb'项


4.同步数据库,重启server

 

python manage.py syncdb
python manage.py runserver


至此可以在admin模块管理这两个model



三.关于list_filter与search_fields


    可以在website/etlweb/admin.py中对应俄*Admin类中添加list_filter与search_fields实现按条件过滤:

   list_filter = ['field_name']

   search_fields = ['field_name']


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值