zoukankan      html  css  js  c++  java
  • 我的第一个Django项目

    参考地址:http://www.informit.com/articles/printerfriendly.aspx?p=1273658

    • 安装Python
    • 安装数据库软件(Mysql
    • 安装Django
    • 创建项目
    • 创建应用
    • 设计Model
    • 修改数据库(mysql)配置
    • 同步数据库
    • 开启admin应用
    • 修改View配置
    • 修改Url配置
    • 创建Template文件
    • 测试项目
    • 总结
    • 附录

     


     

     

    安装Python

    下载地址:http://python.org/getit/

    安装过程略,安装完成后,在环境变量path中加上python目录。

    安装后测试

    打开python shell,输入import this ,如果提示zen of python则表示安装成功。

     

    安装数据库软件(Mysql

    下载地址:http://dev.mysql.com/downloads/installer/ 

    安装及配置过程略。

     

    安装Django

    下载地址:https://www.djangoproject.com/download/ 

    下载完成后,解压下载的压缩文件,然后打开cmd命令行,cddjango目录,执行命令 python setup.py install 

    安装后检查

    打开python shell,输入命令import django,如果没有traceback提示,则表示安装成功。

     

    注:安装完成后,需要把django-admin.py(默认在\Python27\Lib\site-packages\django\bin\)添加到PATH中,以便以后调用。

     

    创建项目

    打开cmd命令行,cd到你需要放置项目的目录(例如E:),然后执行命令 django-admin.py startproject demo 执行之后便会在当前目录下看到新建的项目了。

     

    项目目录结构

    mysite

      |-- mysite

        |-- __init__.py

        |-- settings.py

        |-- urls.py

        |-- wsgi.py

      |-- manage.py

    测试项目

    cmd命令行中cd到新建的项目文件夹中,执行命令manage.py runserver 8080,如果提示0 errors found,则表示项目启动成功。将命令行中提示的http地址拷贝到浏览器中,则可看到欢迎页面。

     

     

    创建应用

    cmd命令行中执行命令manage.py startapp notice,执行完成后便会在项目根目录新建一个app文件夹。

    App文件夹目录结构

    Notice

      |- __init__.py

      |- models.py

      |- tests.py

      |- views.py

    修改demo/settings.py文件,将新创建的应用(notice)加入到INSTALLED_APPS列表中。

    INSTALLED_APPS = (

        'django.contrib.auth',

        'django.contrib.contenttypes',

        'django.contrib.sessions',

        'django.contrib.sites',

        'django.contrib.messages',

        'django.contrib.staticfiles',

        'notice',

        # Uncomment the next line to enable the admin:

        # 'django.contrib.admin',

        # Uncomment the next line to enable admin documentation:

        # 'django.contrib.admindocs',

    )

     

     

     

    设计Model

    修改notice/models.py文件,创建NoticePost类。

    from django.db import models

     

    class NoticePost(models.Model):

        title = models.CharField(max_length=3D150)

        body = models.TextField()

        postdate = models.DataTimeField()

     

        class Meta:

            ordering = ('-postdate',)

     

     

    修改数据库(mysql)配置

    修改demo/setting.py文件,修改DATABASES配置

    DATABASES = {

        'default': {

            'ENGINE': 'django.db.backends.mysql', # Add  'mysql', 'sqlite3' or 'oracle'.

            'NAME': 'test',                      # Or path to database file if using sqlite3.

            'USER': 'root',                      # Not used with sqlite3.

            'PASSWORD': '1',                  # Not used with sqlite3.

            'HOST': '',                      # Set to empty string for localhost. 

            'PORT': '',                      # Set to empty string for default. .

        }

    }

     

     

    同步数据库

    注:在同步数据库之前要先在Mysql中创建test数据库

    cmd命令行中执行命令python manage.py syncdb,如果能够创建数据表,并且没有提示错误则表示执行成功。执行完毕后,可以在数据库中看到新建的数据表和管理员用户。

     

     

    开启admin应用

    修改demo/settings.py文件,去掉INSTALLED_APPS'django.contrib.admin',的注释

    INSTALLED_APPS = (

        'django.contrib.auth',

        'django.contrib.contenttypes',

        'django.contrib.sessions',

        'django.contrib.sites',

        'django.contrib.messages',

        'django.contrib.staticfiles',

        'notice',

        # Uncomment the next line to enable the admin:

        'django.contrib.admin',

        # Uncomment the next line to enable admin documentation:

        # 'django.contrib.admindocs',

    )

    修改demo/urls.py文件,去掉admin相关的注释

    from django.conf.urls import patterns, include, url

    from django.contrib import admin

    admin.autodiscover()

     

    urlpatterns = patterns('',

        # Examples:

        # url(r'^$', 'demo.views.home', name=3D'home'),

        # url(r'^demo/', include('demo.foo.urls')),

     

        # Uncomment the admin/doc line below to enable admin documentation:

        # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

     

        # Uncomment the next line to enable the admin:

        url(r'^admin/', include(admin.site.urls)),

    )

    修改notice/models.py文件,在结尾处加入admin.site.register(NoticePost)

    from django.db import models

    from django.contrib import admin

     

    class NoticePost(models.Model):

        title = models.CharField(max_length=3D150)

        body = models.TextField()

        postdate = models.DateTimeField()

     

    admin.site.register(NoticePost)

     

    完成之后,需要重新同步一下数据库,如果提示django_admin_log表成功创建,则表示admin成功开启,这时可以起到项目python manage.py runserver ,然后在浏览器中输入http://127.0.0.1:8000/admin 即可看到管理员等人界面。输入在同步数据库时创建的管理员用户名和密码,即可登录到项目后台管理页面。

     

     

    定制admin界面

    可以尝试新建几个Notice,完成之后在notice post界面看到所有的notice都是同样的名称,而不是我们创建时的title。所以我们需要定制一下admin的显示。

    修改notice/models.py文件

    from django.db import models

    from django.contrib import admin

     

    class NoticePost(models.Model):

        title = models.CharField(max_length=3D150)

        body = models.TextField()

        postdate = models.DateTimeField()

     

        class Meta:

            ordering = ('-postdate',)

     

    class NoticePostAdmin(admin.ModelAdmin):

        list_display = ('title','body','postdate')

     

    admin.site.register(NoticePost,NoticePostAdmin)

    修改完成后,再次刷新页面,就会看到所做的修改。

     

    修改View配置

    编辑文件notice/views.py

    from django.template import loader, Context

    from django.http import HttpResponse

    from notice.models import NoticePost

     

    def showallnotices(request):

        postlist = NoticePost.objects.all() #获得所有的notice

        t = loader.get_template("notice/notices.html")  #template中文件路径相同

        c = Context({'postlist':postlist}) #notices.html文件中变量名相同

        return HttpResponse(t.render(c))

     

    修改Url配置

    notice目录中新建urls.py文件(文件名可不同),编辑新建的urls.py文件

    from django.conf.urls import patterns, include, url

    from notice.views import showallnotices

     

    urlpatterns = patterns('',

                           url(r'^$',showallnotices),) #此处为views中的函数

     

    修改demo/urls.py文件

    from django.conf.urls import patterns, include, url

    from django.contrib import admin

    admin.autodiscover()

     

    urlpatterns = patterns('',

        # Examples:

        # url(r'^$', 'demo.views.home', name=3D'home'),

        # url(r'^demo/', include('demo.foo.urls')),

     

        # Uncomment the admin/doc line below to enable admin documentation:

        # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

     

        # Uncomment the next line to enable the admin:

        url(r'^admin/', include(admin.site.urls)),

        url(r'^notice/',include('notice.urls')), #该处名称与notice目录中新建的文件名相同

    )    

     

     

    创建Template文件

    在项目根目录创建文件夹templates/notice/,修改demo/setting.py文件,修改TEMPLATE_DIRS,计入新建的templates目录

    TEMPLATE_DIRS = (

        # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".

        # Always use forward slashes, even on Windows.

        # Don't forget to use absolute paths, not relative paths.

        "F:\\Walkbox\\Python\\demo\\django\\demo\\templates ", # !! double \

    )

     

    templates/目录中新建一个base.html文件,然后编辑base.html文件,输入如下内容。

    <html>

    <head><title>My Blog</title></head>

    <body>

    {% block content %}

    {% endblock%}

    </body>

    </html>

    templates/notice/目录中创建一个notice展示页面notices.html,输入以下内容

    {% extends "base.html" %}

     

    {% block content %}

    {% for post in postlist %}

    <div>

    <h2>{{post.title}}</h2>

    <p>{{post.postdate}}</p>

    <p>{{post.body}}</p>

    <br />

    </div>

    {% endfor %}

    {% endblock %}

     

     

    测试项目

    在浏览器中输入:http://127.0.0.1:8000/notice 即可看到我们用admin创建的notice

     

    总结

    最好多写多思考,了解下各个部分的内在联系

     

     

     

     

    附录

    部分CMD命令执行过程:

     

    F:\Walkbox\Python\demo\django>django-admin.py startproject demo

     

    F:\Walkbox\Python\demo\django>cd demo

     

    F:\Walkbox\Python\demo\django\demo>python manage.py runserver

    Validating models...

     

    0 errors found

    Django version 1.4, using settings 'demo.settings'

    Development server is running at http://127.0.0.1:8000/

    Quit the server with CTRL-BREAK.

    [30/Oct/2012 14:40:20] "GET / HTTP/1.1" 200 1955

     

    F:\Walkbox\Python\demo\django\demo>python manage.py startapp notice

     

    F:\Walkbox\Python\demo\django\demo>python manage.py syncdb

    Creating tables ...

    Creating table auth_permission

    Creating table auth_group_permissions

    Creating table auth_group

    Creating table auth_user_user_permissions

    Creating table auth_user_groups

    Creating table auth_user

    Creating table django_content_type

    Creating table django_session

    Creating table django_site

    Creating table notice_noticepost

     

    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): yes

    Username (leave blank to use 'moose'): admin

    E-mail address: admin@126.com

    Password:

    Password (again):

    Superuser created successfully.

    Installing custom SQL ...

    Installing indexes ...

    Installed 0 object(s) from 0 fixture(s)

     

    F:\Walkbox\Python\demo\django\demo>python manage.py syncdb

    Creating tables ...

    Creating table django_admin_log

    Installing custom SQL ...

    Installing indexes ...

    Installed 0 object(s) from 0 fixture(s)

     

     

  • 相关阅读:
    解决Cell重绘导致 重复的问题
    给Cell间隔颜色
    NSUserDefault 保存自定义对象
    xcode6 下载
    unrecognized selector sent to instance
    16进制颜色转换
    local unversioned, incoming add upon update问题
    应用崩溃邮件通知
    TabBar变透明
    代码手写UI,xib和StoryBoard间的博弈,以及Interface Builder的一些小技巧
  • 原文地址:https://www.cnblogs.com/cstudio/p/2747139.html
Copyright © 2011-2022 走看看