qiaoliang0302

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

启动虚拟机:

workon bj18_py3

创建一个项目:

django-admin.py startproject mysite

启动开发用服务器:从外层项目 mysite 目录切换进去,若准备好了就运行命令:

python manage.py runserver

python manage.py runserver 8080

python manage.py runserver 0.0.0.0:8000
 
你将会看到命令行输出如下内容: 
Performing system checks... 
0 errors found 
May 13, 2015 - 15:50:53 
Django version 1.8, using settings 'mysite.settings' 
Starting development server at http://127.0.0.1:8000/ 
Quit the server with CONTROL-C.
  
请在你的 Web 浏览器中访问 http://127.0.0.1:8000/。你会看到一个令人愉悦的,柔和的淡蓝色 “Welcome to Django” 页面。它工作正常!
 也可以指定  python manage.py runserver 0.0.0.0:8001   指定地址和端口。
 
 数据库设置:
以mysql数据库为例,编辑 mysite/settings.py。
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
'NAME': 'mysite_db', #使用数据库名称,数据库必须提前创建好 'USER': 'root', #链接数据库的用户名 'PASSWORD': 'itcast', #链接数据库的密码 'HOST':'localhost', #配置数据库的ip地址 'PORT':'3306', #配置数据库的端口号 } }

这时,启动开发服务器出错,原因是缺少MySQLdb模块,用pip list 命令查看,

(bj18_py3) python@ubuntu:~/bj18/mysite$ pip list
Package       Version
------------- -------
Django        1.8.2  
pip           19.1.1 
pkg-resources 0.0.0  
PyMySQL       0.9.3  
setuptools    41.0.1 
wheel         0.33.1 

这时,python3需要用pip install pymysql 安装。安装成功后在__init__.py文件加入:

 

import pymysql
pymysql.install_as_MySQLdb()

 

然后启动开发用服务器。

创建模型:
项目 ( Projects ) vs. 应用 ( apps )
项目与应用之间有什么不同之处?应用是一个提供功能的 Web 应用 – 例如:一个博客系统、一个公共记录的数据库或者一个简单的投票系统。 项目是针对一个特定的 Web 网站相关的配置和其应用的组合。一个项目可以包含多个应
用。一个应用可以在多个项目中使用。

 

要创建你的应用,请确认与 manage.py 文件在同一的目录下并输入以下命令:

python manage.py startapp polls

在这简单的投票应用中,我们将创建两个模型: Poll 和 Choice 。 Poll 有:问题和发布日期两个字段。 Choice 有两个字段: 选项 ( choice ) 的文本内容和投票数。每一个 Choice 都与一个 Poll 关联。这些概念都由简单的 Python 类来表现。编辑 polls/models.py 文件后如下所示:

class Question(models.Model):
    question_text = models.CharField(max_length=200)          #一些 Field 实例是需要参数的。 例如 CharField 需要你指定~django.db.models.CharField.max_length 。
    pub_date = models.DateTimeField('date published')    #你可以在初始化 Field 实例时使用第一个位置的可选参数来指定人类可读的名字。这在Django的内省部分中被使用到了,而且兼作文档的一部分来增强代码的可读性。若字段未提供该参数,Django 将使用符合机器习惯的名字。在本例中,我们仅定义了一个符合人类习惯的字段名 Poll.pub_date 。对于模型中的其他字段,机器名称就已经足够替代人类名称了。
class Choice(models.Model):
    poll = models.ForeignKey(Question)                       #定义了一个关联。它告诉 Django 每一个 Choice 关联一个 Poll 。
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)               #一个 Field 实例可以有不同的可选参数; 在本例中,我们将 votes 的 default 的值设为 0。

 Django 支持常见数据库的所有关联:多对一(many-to-ones ),多对多( many-to-manys ) 和 一对一 ( one-to-ones )。

 
激活模型
有了这些模型代码 Django 就可以做:为该应用创建对应的数据库架构 (CREATE TABLE statements) 。 为 Poll 和Choice 对象创建 Python 访问数据库的 API 。
首先,我们需要告诉我们的项目已经安装了 polls 应用。再次编辑 settings.py 文件,在 INSTALLED_APPS 设置中加入 'polls' 字符。因此结果如下所示:
INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'polls',
)
现在 Django 已经知道包含了 polls 应用。让我们运行如下命令:
python manage.py makemigrations   #生成迁移文件
python mange.py migrate #执行迁移生成表

 

 
进入管理网站:
 
在sattings.py设置本地化
LANGUAGE_CODE = 'zh-CN'

TIME_ZONE = 'Asia/Shanghai'

 

 设置超级管理员账户密码
python manage.py syncdb             

python manage.py createsuperuser#创建超级用户
 
我们需要告诉管理网站 Poll 对象要有一个管理界面。为此,我们在你的 polls 目录下创建一个名为 admin.py 的文件,并添加如下内容:
from django.contrib import admin
from polls.models import Question,Choice
class QuestionAdmin(admin.ModelAdmin):
    list_display = ["id","question_text","pub_date"]
class ChoiceAdmin(admin.ModelAdmin):
    list_display = ["id","choice_text","votes","poll_id"]
admin.site.register(Question,QuestionAdmin)
admin.site.register(Choice,ChoiceAdmin)

 修改models.py文件,返回名字:

class Question(models.Model):
    question_text = models.CharField(max_length=200)          #一些 Field 实例是需要参数的。 例如 CharField 需要你指定~django.db.models.CharField.max_length 。
    pub_date = models.DateTimeField('date published')    #你可以在初始化 Field 实例时使用第一个位置的可选参数来指定人类可读的名字。这在Django的内省部分中被使用到了,而且兼作文档的一部分来增强代码的可读性。若字段未提供该参数,Django 将使用符合机器习惯的名字。在本例中,我们仅定义了一个符合人类习惯的字段名 Poll.pub_date 。对于模型中的其他字段,机器名称就已经足够替代人类名称了。
    def __str__(self):
        return self.question_text
class Choice(models.Model):
    poll = models.ForeignKey(Question)                       #定义了一个关联。它告诉 Django 每一个 Choice 关联一个 Poll 。
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)               #一个 Field 实例可以有不同的可选参数; 在本例中,我们将 votes 的 default 的值设为 0。
    def __str__(self):
        return self.choice_text

 

 

 
 
 
 
 
 
 
 
posted on 2019-07-03 07:17  qiaoliang0302  阅读(133)  评论(0)    收藏  举报