django开发基本网页和使用MySQL



开始一个项目

打开cmd ,进入django的开发目录(自己按个人习惯建议个开发目录)

~/django-admin.pystartprojectmysite,注意,这里的django-admin.py要输入绝对路径

      这样就会在当前目录下创建一个目录 mysite,

      startproject 命令创建一个目录mysite,包含4个文件:    
 

  • __init__.py :让 Python 把该目录当成一个开发包 (即一组模块)所需的文件。 这是一个空文件,一般你不需要修改它。

  • manage.py :一种命令行工具,可让你以多种方式与该 Django 项目进行交互。 键入pythonmanage.pyhelp,看一下它能做什么。 你应当不需要编辑这个文件;在这个目录下生成它纯是为了方便。

  • settings.py :该 Django 项目的设置或配置。 查看并理解这个文件中可用的设置类型及其默认值。

  • urls.py:django项目的URL设置。 可视其为你的django网站的目录。 目前,它是空的。

运行开发服务器

要运行你的服务器,请切换到你的项目目录里 (cdmysite )。如果你还没准备好,那么运行下面的命令:

python manage.py runserver

你会看到些像这样的

Validating models...
0 errors found.


Django version 1.0, using settings 'mysite.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

这将会在端口8000启动一个本地服务器, 并且只能从你的这台电脑连接和访问。 既然服务器已经运行起来了,现在用网页浏览器访问http://127.0.0.1:8000/ 。 你应该可以看到一个令人赏心悦目的的淡蓝色Django欢迎页面。 它开始工作了。


创建简单的网页

 1)在上一篇中使用django-admin.pystartproject制作的mysite文件夹中,创建一个叫做views.py的空文件。这个Python模块将包含这一章的视图。 请留意,Django对于view.py的文件命名没有特别的要求,它不在乎这个文件叫什么。但是根据约定,把它命名成view.py是个好主意,这样有利于其他开发者读懂你的代码,正如你很容易的往下读懂本文。

我们的Hello world视图非常简单。 这些是完整的函数和导入声明,你需要输入到views.py文件:


  1. from django.http import HttpResponse  
  2.   
  3. def hello(request):  
  4.     return HttpResponse("Hello world")  
from django.http import HttpResponse

def hello(request):
    return HttpResponse("Hello world")

这里就不分析代码了

2) 然后在urls.py中添加url调用

  1. from django.conf.urls.defaults import *  
  2.   
  3. # Uncomment the next two lines to enable the admin:  
  4. # from django.contrib import admin  
  5. # admin.autodiscover()  
  6.   
  7. urlpatterns = patterns('',  
  8.     # Example:  
  9.     # (r'^mysite/', include('mysite.foo.urls')),  
  10.   
  11.     # Uncomment the admin/doc line below and add 'django.contrib.admindocs'  
  12.     # to INSTALLED_APPS to enable admin documentation:  
  13.     # (r'^admin/doc/', include('django.contrib.admindocs.urls')),  
  14.     ('^hello/$', hello),  
  15.     # Uncomment the next line to enable the admin:  
  16.     # (r'^admin/', include(admin.site.urls)),  
  17. )  
from django.conf.urls.defaults import *

# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
# admin.autodiscover()

urlpatterns = patterns('',
    # Example:
    # (r'^mysite/', include('mysite.foo.urls')),

    # Uncomment the admin/doc line below and add 'django.contrib.admindocs'
    # to INSTALLED_APPS to enable admin documentation:
    # (r'^admin/doc/', include('django.contrib.admindocs.urls')),
    ('^hello/$', hello),
    # Uncomment the next line to enable the admin:
    # (r'^admin/', include(admin.site.urls)),
)


在cmd下,cd 到mysite所在目录,输入python manage.py runserver,启动网页服务

然后在浏览器输入http://127.0.0.1:8000/hello/

即可看到我们熟悉的界面,Hello World!


Django站点管理(使用MySQL)

1)修改settings.py

  1. DATABASES = {  
  2.     'default': {  
  3. #        'ENGINE': 'django.db.backends.sqlite3',  
  4. #        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),  
  5.         'ENGINE''django.db.backends.mysql',  
  6.         'NAME''test',  
  7.         'USER''root',  
  8.         'PASSWORD''123456',  
  9.           
  10.   
  11.   
  12.     }  
  13. }  
DATABASES = {
    'default': {
#        'ENGINE': 'django.db.backends.sqlite3',
#        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
		'ENGINE': 'django.db.backends.mysql',
		'NAME': 'test',
		'USER': 'root',
		'PASSWORD': '123456',
		


    }
}

这里的用户名密码换成自己的


现在我们可以创建数据库表了。 首先,用下面的命令对校验模型的有效性:

python manage.py validate

确定数据库连接正确的,就可以创建app了,执行python manage.py startapp books

它将mysite 的目录里创建了一个 books 目录,如下结构

books/
    __init__.py
    models.py
    tests.py
    views.py
修改books/models.py 

  1. from django.db import models  
  2.   
  3. # Create your models here.  
  4. class Publisher(models.Model):  
  5.     name = models.CharField(max_length=30)  
  6.     address = models.CharField(max_length=50)  
  7.     city = models.CharField(max_length=60)  
  8.     state_province = models.CharField(max_length=30)  
  9.     country = models.CharField(max_length=50)  
  10.     website = models.URLField()  
  11.   
  12. class Author(models.Model):  
  13.     first_name = models.CharField(max_length=30)  
  14.     last_name = models.CharField(max_length=40)  
  15.     email = models.EmailField()  
  16.   
  17. class Book(models.Model):  
  18.     title = models.CharField(max_length=100)  
  19.     authors = models.ManyToManyField(Author)  
  20.     publisher = models.ForeignKey(Publisher)  
  21.     publication_date = models.DateField()  
from django.db import models

# Create your models here.
class Publisher(models.Model):
    name = models.CharField(max_length=30)
    address = models.CharField(max_length=50)
    city = models.CharField(max_length=60)
    state_province = models.CharField(max_length=30)
    country = models.CharField(max_length=50)
    website = models.URLField()

class Author(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=40)
    email = models.EmailField()

class Book(models.Model):
    title = models.CharField(max_length=100)
    authors = models.ManyToManyField(Author)
    publisher = models.ForeignKey(Publisher)
    publication_date = models.DateField()

再次编辑settings.py,

# Application definition


INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'books',
)


MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
)

books如果出错的话,就将books改成mysite.books,我用的是books,没有问题


执行

python manage.py syncdb

执行这个命令后,将看到类似以下的内容:

Creating table books_publisher
Creating table books_author
Creating table books_book
Installing index for books.Book model

这时进入mysql,可以查看这些表已经创建


最后 将你的Models加入到Admin管理中

admin.py

  1. from django.contrib import admin  
  2.   
  3. # Register your models here.  
  4. from books.models import Publisher, Author, Book  
  5.   
  6. class AuthorAdmin(admin.ModelAdmin):  
  7.     list_display=('first_name','last_name','email')  
  8.     search_fields=('first_name','last_name')  
  9.   
  10. admin.site.register(Publisher)  
  11. admin.site.register(Author,AuthorAdmin)  
  12. admin.site.register(Book)  
from django.contrib import admin

# Register your models here.
from books.models import Publisher, Author, Book

class AuthorAdmin(admin.ModelAdmin):
	list_display=('first_name','last_name','email')
	search_fields=('first_name','last_name')

admin.site.register(Publisher)
admin.site.register(Author,AuthorAdmin)
admin.site.register(Book)




当这一切都配置好后,现在你将发现Django管理工具可以运行了。 启动开发服务器(如前:`` python manage.py runserver`` ),然后在浏览器中访问:http://127.0.0.1:8000/admin/

就是简单的用户登录,然后就可以看到数据库的表,可以可视化的操作这些表了~


Django的MVC架构

M: 即model,数据存取部分,由django数据库层处理


V: 即View,选择显示哪些数据要及怎样显示的部分,由视图和模板处理


C: 即Control,根据用户输入委派视图的部分,由 Django 框架通过按照 URLconf 设置,对给定 URL 调用合适的 python 函数来自行处理。


阅读更多
换一批

没有更多推荐了,返回首页