Django入门教程
创建项目
下载安装和创建项目可以先看前一篇博客链接: Django的安装与项目的创建.
- 以下用创建的项目名称为myweb为例
创建应用
1、创建一个应用程序
Django自带了一个非常实用的应用程序,可以自动生成应用目录,在Django项目的目录myweb下执行以下命令
$ python manage.py startapp myapp
- 执行完之后会创建一个目录myapp
创建一个视图
- 打开文件myapp/views.py,编写我们第一个试图类
from django.http import HttpResponse
def index(request):
return HttpResponse ("Hello World!")
- 想调用这个试图的话,我们需要将其映射到一个URL里,因此我们需要一个路由配置文件
- 路由配置文件为myapp/urls.py,我们打开该文件,应该包含以下代码:
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
# view.index相当于引用了引用了我们在视图中创建的index类
]
- 接下来我们要将URLconf指向myapp.url模块,在 myweb/urls.py添加一条import用于django.conf.urls.include和插入include()的urlpatterns列表:
from django.contrib import admin
from django.urls import path,include
urlpatterns = [
#path('admin/', admin.site.urls),
path("myapp/", include("myapp.urls"))
]
- 之后我们验证是否连接上视图,在myweb目录下执行以下命令:
$ python manage.py runserver
- 在浏览器中转到http://127.0.0.1:8000/myapp/,您应该看到文本"Hello, world. "
项目模型的设置
连接mysql设置
- 在myweb.setting中,DATABASES的设置默认为
- 如果要改成其他数据库需要先修改ENGINE,内置数据库有:
'django.db.backends.postgresql'
'django.db.backends.mysql'
'django.db.backends.sqlite3'
'django.db.backends.oracle'
- 若我们想用mysql,需要在myweb/settings.py文件中,通过DATABASES项进行数据库设置
DATABASES = {
'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': BASE_DIR / 'db.sqlite3',
'ENGINE': 'django.db.backends.mysql',
'HOST':'your host',
'NAME': 'your databasename',
'USER':'your user',
'PASSWORD':'your password',
'PORT':'your port'
}
}
注意:Django使用MySQL数据库需要加载 MySQLdb模块,需要安装 mysqlclient
- 我们可以用pip指令下载
$ pip install mysqlclient
- 如果无法下载成功,就访问以下网址寻找适合自己python环境的版本下载
https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient. - 如果不知道自己适合哪种版本的就通过py文件执行以下代码
from pip._internal.pep425tags import get_supported
print(get_supported())
- 我的执行结果是这样
所以我需要下载mysqlclient‑1.4.6‑cp38‑cp38m‑win_amd64.whl
- 下载下来后执行安装程序:
$ pip install mysqlclient‑1.4.6‑cp38‑cp38m‑win_amd64.whl
创建模型
- 首先在我们的应用程序中创建一个stu表信息操作的Model类
- 编辑 myapp/models.py文件
from django.db import models
# Create your models here.
class Stu(models.Model):
'''自定义Stu表对应的Model类'''
#定义属性:默认主键自增id字段可不写
id = models.AutoField('序号', primary_key=True)
name = models.CharField('姓名', max_length=16)
age = models.SmallIntegerField('年龄')
sex = models.CharField('性别', max_length=1)
classid=models.CharField('班级', max_length=8)
# 定义默认输出格式
def __str__(self):
return "%d:%s:%d:%s:%s"%(self.id,self.name,self.age,self.sex,self.classid)
# 自定义对应的表名,默认表名:myapp_stu
class Meta:
db_table="stu"
注意:这里的类属性必须和数据库table中的每个字段的设置一一对应
激活模型
- 编辑myweb/settings.py文件,并将该虚线路径添加到该INSTALLED_APPS设置。
INSTALLED_APPS = [
'django.contrib.admin' ,
'django.contrib.auth' ,
'django.contrib.contenttypes' ,
'django.contrib.sessions' ,
'django.contrib.messages' ,
'django.contrib.staticfiles' ,
'myapp.apps.MyappConfig',
]
- 这样我们就能用Django封装好的方法对数据库中的数据进行读取了
- 首先进入交互式的Python shell,并使用Django提供的免费API
>>> from myapp.models import Stu
>>> mod = Stu.objects
# 获取所有信息
>>> lists = mod.all()
# 获取单条信息
>>> mod.get(id=1)
在myapp应用的视图中使用
# 文件:myapp/views.py 文件代码
def stu(request):
#获取所有stu表信息
lists = Stu.objects.all()
print(lists)
#获取单条学生信息
print(Stu.objects.get(id=2))
return HttpResponse("ok")
- 之后配置路由
#在myapp/urls.py文件中配置
path('stu/', views.stu),
- 再次启动服务后,就可以在 http://localhost:8000/myapp/stu中看到我们查询到的信息了
(转载注明出处)






467

被折叠的 条评论
为什么被折叠?



