zoukankan      html  css  js  c++  java
  • django的如何创建一个小例子-1

    1.安装完成后,进行测试打开“cmd" ,进入python环境

    输入” import django
    >>> django.get_vwesion()“查看django的版本

    如图:

     2.再合适位置创建一个文件夹如:新建文件夹名为‘django-project’,用管理员身份打开

    输入”django-admin startproject project“,创建一个文件夹

    如图:

     3.输入”tree . "和“tree . /F”查看目录层级

    如图:

     目录说明:

    ─project
        │  manage.py(一个命令行工具,可以使用多种方式对django进行操作)
        │
        └─project
                settings.py(一个中介,它告诉python这个目录应该看作一个python的包)
                urls.py(项目配置文件)
                wsgi.py(项目的URL声明)
                __init__.py(项目与WSGI兼容的web服务器入口)

    4.配置数据库

    在--init--.py中写入

    import pymysql
    pymysql.install_as_MySQLdb()
    

    在本地mysql数据库中新建一个表:打开cmd

    mysql -u root -p  进入数据库

    新建数据库create database sunck;

    在settings.py中配置数据库

     1 DATABASES = {
     2     'default': {
     3         'ENGINE': 'django.db.backends.mysql',
     4         'NAME': 'sunck',#数据库名
     5         'USER':'root',#用户名
     6         'PASSWORD':'123',#数据库密码
     7         'HOST': 'localhost',#数据库服务器ip
     8         'PORT': '3306',#端口
     9     }
    10 }

     5.创建应用(在一个项目中可以创建多个应用,那个应用进行一种业务处理)

    打开黑屏终端进入django project下的project目录下

    执行“python manage.py startapp myApp”新建一个名为myApp的应用

    如果执行时报错,如图:

    解决办法:

    找到Python安装路劲下的Python36-32Libsite-packagesdjangodbackendsmysqlase.py文件
    将文件中的如下代码注释

    if version < (1, 3, 3):
        raise ImproperlyConfigured("mysqlclient 1.3.3 or newer is required; you have %s" % Database.__version__)

    既可成功运行,如图:

     项目中如图:

    目录说明:admin.py(站点配置)

                    models.py(模型)

                   view.py(视图)

    激活应用:在seetings.py文件中将myApp加入

    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     'myApp',#加入myApp
    9 ]

    6.定义模型(有一个数据表就对应一个模型)

    在models.py引入from django.db import models,模型类要继承models.Model类

    定义两个表,一个班级一个学生

     1 from django.db import models
     2 class Grades(models.Model):
     3     gname   = models.CharField(max_length=20)
     4     gdate   = models.DateField()
     5     ggirlnum = models.IntegerField()
     6     gboynum  = models.IntegerField() 
     7     isDelete = models.BooleanField(default=False)
     8 
     9 class Students(models.Model):
    10     sname = models.CharField(max_length=20)
    11     sgender = models.BooleanField(default=True)
    12     sage=models.IntegerField()
    13     scontnd=models.CharField(max_length=20)
    14     isDelete = models.BooleanField(default=False)
    15     sgrade = models.ForeignKey("Grades")#关联外键

    说明;不需要定义主键,再定义时自动添加,并且值为自动增加的

    7.在数据库中生成数据表

    生成迁移文件,在project文件下执行“ python manage.py makemigrations”,在migrations目录下生成一个迁移文件,此时数据库中还没有生成数据表

    若出现错误1:

     修改代码为“ 1 sgrade = models.ForeignKey("Grades",on_delete=models.CASCADE) 

     错误2:

     解决办法:C:UsersAdministratorAnaconda3Libsite-packagesdjangodbackendsmysqloperations.py

    把146行改为:query = query.encode(errors='replace')

     错误3:

    解决办法:在settings.py中添加“‘  'OPTIONS':{'isolation_level':None}  " 

     1 DATABASES = {
     2     'default': {
     3         'ENGINE': 'django.db.backends.mysql',
     4         'NAME': 'sunck',#数据库名
     5         'USER':'root',#用户名
     6         'PASSWORD':'123',#数据库密码
     7         'HOST': 'localhost',#数据库服务器ip
     8         'PORT': '3306',#端口
     9         'OPTIONS':{'isolation_level':None}#解决问题
    10     }
    11 }

     生成迁移文件,成功如图所示:

     执行迁移文件,输入语句     python manage.py migrate 生成数据表

    出现错误:

     解决办法:Django2.1不再支持MySQL5.5,必须5.6版本以上

     二选一
    (1 )Django降级到2.0
     pip install Django==2.0.0 -i https://pypi.douban.com/simple
    (2)MySQL升级

    执行迁移文件成功,如图所示:



  • 相关阅读:
    Python脚本运行出现语法错误:IndentationError: unindent does not match any outer indentation level
    Python3 运算符
    Python3 注释
    Python3 解释器
    Python3 环境搭建
    Python 3 教程
    Python3 基本数据类型
    趣闻|Python之禅(The Zen of Python)
    ios开发笔记根据传入字符串的长度动态生成label,并按照屏幕宽度排列
    iOS开发设置tableview的分割线
  • 原文地址:https://www.cnblogs.com/ZHANG576433951/p/12069795.html
Copyright © 2011-2022 走看看