Django笔记1--Django服务器项目的创建

学习网址:https://www.w3cschool.cn/django/django-first-app.html

1.创建项目

①、创建Django项目总文件夹

使用库中 django-admin.py 文件来创建名为myweb的项目:
Terminal运行 F:/DjangoProject >

django-admin startproject myweb

该命令完成后,将在当前目录DjangoProject下创建名为myweb的Django项目文件夹,项目文件夹初始有三部分,
其中有一个同名的配置文件夹(之后需进入该同名的配置文件夹内,设置setting.py),
除同名配置文件夹外,剩下分别还有默认的templates资源文件夹manage.py文件

②、 提前创建好数据库(以创建MySQL数据库为例):

根据自身需求创建好项目将要使用的数据库(也可不创建使用项目默认的sqlite3数据库)
创建Mysql数据库方法之1(电脑装有Mysql): Win+R运行cmd,进入MySQL数据库执行:

create database 数据库名 character set utf8;

创建的方法很多,确保有新的数据库名就行,数据表这里不用创建。

③、在setting.py同目录下的__init__.py文件中加入:

import pymysql
pymysql.install_as_MySQLdb()

如果不是使用默认的sqlite3数据库,必须添加这两句,否则将报错
这相当于预先声明 使用了Mysql数据库

④、为项目设置数据库:

修改在settings.py文件中的DATABASES配置 :

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', # 数据库类型设置为mysql
        'NAME': 'xxxDB',  # 数据库名
        'HOST': 'localhost',  # 数据库地址
        'USER': 'root',  # 用户名
        'PASSWORD': 'xxxxxx',  # 用户密码
        'PORT': '3306'  # 数据库端口
    }
}

修改项目语言与时区:

# LANGUAGE_CODE = 'en-us'  # 英语
LANGUAGE_CODE = 'zh-Hans'  # 中国汉字

# TIME_ZONE = 'UTC'  # 国际时间
TIME_ZONE = 'Asia/Shanghai'  # 亚洲上海时区

报错?:

‘django-admin’ 不是内部或外部命令,也不是可运行的程序
或批处理文件。

解决方法:

卸载django:pip uninstall django
以管理员身份运行cmd,
重新安装django:pip install django==9.99.99 #自选版本号


2.为项目创建应用

Django项目自带配置文件部分,但是应用功能部分需自己创建

2-1、为项目创建一个应用模块

!创建应用前 先cd进入myweb 项目文件下,然后调用 manage.py 文件进行创建,注意不是在里面的同名文件下!
创建一个名为myapp的应用:
Terminal运行 F:/DjangoProject/myweb >

python manage.py startapp myapp

创建一个app模块会自动生成app文件夹,该文件夹包括几个文件。

2-2、注册APP模块

在目录中找到myweb项目包里面的setting.py,在INSTALLED_APPS当中注册APP模块:
INSTALLED_APPS = [
‘django.contrib.admin’,
‘django.contrib.auth’,
‘django.contrib.contenttypes’,
‘django.contrib.sessions’,
‘django.contrib.messages’,
‘django.contrib.staticfiles’,
’myapp’
]

每次调用manage.py创建出一个新应用,都需要在settings中进行注册才能使用!

测试运行服务器:

在包下输入命令,启动项目:
Terminal运行 X:/xxx/myweb>

python manage.py runserver ip port    #可不写ip、port部分即:python manage.py runserver  默认为127.0.0.1:8000

浏览器访问服务器:
http://127.0.0.1:8000/
在这里插入图片描述


报错?
在这里插入图片描述
出现这个错误是因为当前使用的django版本差异导致的,当前项目使用的django可能是使用url的1版本

解决:
点击进入上一行报错的…/…/urls.py文件,将原来的:

from django.urls import path

修改为:

from django.conf.urls import url

并将该urls.py文件中所有使用的path更改为url

3.为项目定义模型

即定义数据表。
myapp应用文件夹下的models.py中 创建模型类(一个类代表一个数据表):

from django.db import models


# Create your models here.
class Computer(models.Model):
	'''定义电脑类'''
    cbrand = models.CharField(max_length=10)
    cprice = models.FloatField()
    cpub_time = models.DateField()
    cfactory_id = models.ForeignKey('FactoryInfo')  # 外键连接另一张表

    def __str__(self):
        return self.cbrand


class FactoryInfo(models.Model):
	'''定义厂家类'''
    fname = models.CharField(max_length=10)
    flisted = models.BooleanField()
    fcontent = models.CharField(max_length=100)

    # fcomputer = models.ForeignKey()
    def __str__(self):
        return self.fname + ":" + self.fcontent

4.生成数据表

即 将定义好的模型 转化成 数据库里真正的数据表。

在这里要注意的是,上述创建的应用“myapp”是否已成功加入到 settings.py 文件中的 INSTALLED_APPS 列表(注册), 若已加入,则表名此应用已激活或该模型已激活。接下来,只需按照下列步骤完成即可成功生成数据表,如下:

第 1 步 生成迁移文件:

假定已在 myweb 目录下,则执行下列命令可用于生成迁移文件,并可根据模型类来自动生成 SQL 语句,命令如下:
Terminal运行 F:/DjangoProject/myweb>

python manage.py makemigrations

报错?:

conn.encoders[SafeBytes] = conn.encoders[bytes]
KeyError: <class ‘bytes’>

解决方法:

在setting.py同目录下的__init__.py文件中加入:

import pymysql
pymysql.install_as_MySQLdb()

第 2 步 生成数据表:

执行如下的迁移命令,并用于执行 SQL 语句来生成数据表,命令如下:
Terminal运行 F:/DjangoProject/myweb>

python manage.py migrate

5.对数据的增删查改

I.进入 Python Shell 脚本,可使用如下命令:

Terminal运行 X:/xxx/myweb>python manage.py shell
若要对电脑表 Computer 的数据进行增删查改操作,则需要简要了解以下几个操作函数,如下:
首先,若要完成下列的数据操作过程,则需导入如下包(操作表前,导入该表):
from myapp.models import FactoryInfo
from datetime import date

II.修改表
插入数据

例如:对myapp文件里models.py文件中创建好的FactoryInfo表进行修改(见步骤3.)
在这里插入图片描述
记得 对象.save()
可能报错:
创建数据库的编码格式出错,不支持中文数据
创建数据库时记得指定编码格式
create database DBNAME character set [utf8,gbk…]

查询数据

条件查询一条
查询表内所有
(查询前需先导入import该表)
在这里插入图片描述

修改数据

对象=查询条件
对象.属性=新值

删除数据

对象.delete()
在这里插入图片描述

6.创建超级管理员

Django创建项目管理员账号,超管可对项目数据库数据进行管理
Terminal运行 F:/DjangoProject/myweb>

python manage.py createsuperuser     # 创建一个超级管理员账号
输入账号:admin
输入邮箱:123456789@qq.com
输入密码:test123456          #需二次确认

Terminal运行 F:/DjangoProject/myweb>

python manage.py runserver   #运行服务器

访问登录界面:http://127.0.0.1:8000/admin/

可在setting.py设置网页显示语言,时间区间,使管理员登录后看到的数据显示为中文
##### LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'zh-Hans'  # 中文

##### TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai'  # 上海时区

7.注册模型(admin.py网页显示创建的数据表)

# Register your models here.
from .models import Computer, FactoryInfo


# 定义后台 展示(格式)设置
class ComputerAdmin(admin.ModelAdmin):
    list_display = ['id', 'cbrand', 'cprice', 'cpub_time', 'cfactory_id']
class FactoryAdmin(admin.ModelAdmin):
    list_display = ['fname', 'flisted', 'fcontent']
# 注册模型
admin.site.register(Computer, ComputerAdmin)
admin.site.register(FactoryInfo, FactoryAdmin)

8.搜索

search_f=[’’]

9.视图简介(自定义显示内容)

I.myapp文件下设置views.py (③.对应视图)
from django.shortcuts import render  
from django.http import HttpResponse  # HttpResponse渲染
# Create your views here.
def index(request):
    return HttpResponse("myapp/index")
    # return render([])  # 传递三个值(request,文件url,渲染值)
def welcome(request):
    return HttpResponse("myapp/welcome")
II.myapp文件下创建urls.py (②.分路由发送对应视图)
from django.conf.urls import url

from .views import *  # 分路由引入视图

# myapp分路由
urlpatterns = [
    url(r'^index/', index),
    url(r'^welcome/', welcome)
]
III.主文件下设置urls.py (客户端访问顺序:①.主路由进入myapp里的分路由)
from django.conf.urls import url
from django.contrib import admin

from .views import hello  # 主路由引入视图(创建视图如I.)
# 用include包含分路由
from django.conf.urls import include

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^hello/', hello),  # 返回主路由下的视图
    url(r'^myapp/', include('myapp.urls'))  # 主路由进入myapp分路由(返回分路由下视图)

]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值