创建项目
创建项目
文件->新建项目->django->项目配置->完成
各个文件的含义
downer/
manage.py
downer/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
- downer/:项目容器
- manage.py:与Django项目交互的程序
- downer/downer/:项目实际所在的python包
- init.py:空文件,告诉Python该目录应视为Python软件包
- settings.py:项目的设置/配置
- urls.py:项目的URL声明;Django支持的网站的“目录”
- asgi.py:与ASGI兼容的Web服务器为项目提供服务的入口点
- wsgi.py:与兼容WSGI的Web服务器为项目提供服务的入口点
运行
... \> py manage.py runserver 8080
创建app
创建app
... \> py manage.py startapp doner
项目结构
doner/
__init__.py
admin.py
apps.py
models.py
tests.py
views.py
migrations/
__init__.py
- models: 用于创建数据库的模板
- views.py:用于定义路由接口
第一个接口 简单的登录接口
urls.py
from django.contrib import admin
from django.urls import path
from doner import views
urlpatterns = [
path('login', views.login),
]
views.py
from django.shortcuts import render, HttpResponse
from django.http import JsonResponse
def login(request):
if request.method == 'GET':
res = {
'data': None,
'meta': {
'msg': '请求错误',
'status': 404
}
}
return JsonResponse(res)
if request.method == 'POST':
res = {
'data': {
'username': 'yanggeol',
'user_id': 408407407
},
'meta': {
'msg': '登陆成功',
'status': 200
}
}
return JsonResponse(res)
返回结果(post)
{
"data": {
"username": "yanggeol",
"user_id": 408407407
},
"meta": {
"msg": "登陆成功",
"status": 200
}
}
返回结果(get)
{
"data": null,
"meta": {
"msg": "请求错误",
"status": 404
}
}
数据库简易操作
数据库配置
models.py中创建表的结构
from django.db import models
class User(models.Model):
username = models.CharField(max_length=32) #用户名
password = models.CharField(max_length=32) #密码
class UserInfo(models.Model):
email = models.CharField(max_length=32) #用户邮箱
info_id = models.ForeignKey(User, on_delete=models.CASCADE) #绑定外键
downer/init.py
import pymysql
pymysql.install_as_MySQLdb()
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', #使用MySQL数据库
'NAME': 'downer', #数据库名称
'USER': 'root', #管理员用户名
'PASSWORD': '123456', #管理员登录密码
'HOST': '127.0.0.1', #地址
'PORT': 3306 #端口号
}
}
激活app
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# 'doner'
'doner.apps.DonerConfig'
]
默认情况下,INSTALLED_APPS包含以下应用程序,所有这些应用程序都与Django一起提供:
- django.contrib.admin–管理站点。您将很快使用它。
- django.contrib.auth –认证系统。
- django.contrib.contenttypes –内容类型的框架。
- django.contrib.sessions –会话框架。
- django.contrib.messages –消息传递框架。
- django.contrib.staticfiles –用于管理静态文件的框架。
数据迁移,创建表格
... \> py manage.py startapp makemigratins
... \> py manage.py startapp migrate
进行数据库操作的登录接口
from django.shortcuts import render, HttpResponse
from django.http import JsonResponse
from doner import models # 导入app中的models模块
# 登录接口
def login(request):
if request.method == 'GET':
res = {
'data': None,
'meta': {
'msg': '请求错误',
'status': 404
}
}
return JsonResponse(res)
if request.method == 'POST':
user = request.POST.get('username') #获取post传来的用户名
pwd = request.POST.get('password') #获取post传来的密码
if models.User.objects.filter(username=user, password=pwd): #在数据库里查询
res = {
'data': {
'username': 'yanggeol',
'user_id': 408407407
},
'meta': {
'msg': '登陆成功',
'status': 200
}
}
else:
res = {
'data': None,
'meta': {
'msg': '用户不存在',
'status': 200
}
}
return JsonResponse(res)
未激活app
接口代码
from django.shortcuts import render, HttpResponse
from django.http import JsonResponse
def login(request):
res = {
'data': {
'name': 'yanggeol'
},
'meta': {
'msg': '成功',
'status': 200
}
}
return JsonResponse(res)
def logout(request):
return HttpResponse(123456)
doner/urls.py
没有激活app时,如若要使用视图views.py,则需将其映射到URL-为此,我们需要一个URLconf。
- 首先,在doner目录创建一个urls.py文件,然后导入视图views。
- 然后将根URLconf指向该done.urls模块。在中 downer/urls.py,添加导入django.urls.include并将其插入 include()到urlpatterns列表中。
include()的功能:允许引用其他URLconf。每当Django遇到时include(),它都会截断直到该点匹配的URL的任何部分,并将剩余的字符串发送到包含的URLconf中以进行进一步处理。
其背后的想法include()是简化URL的即插即用。 - 运行程序
from django.urls import path
from . import views
urlpatterns = [
path('login/', views.login, name='login'), #若第一个空不添加login等等,则默认导入第一个接口地址,若添加,则按添加的地址分别导入接口函数
path('logout/', views.logout, name='logout')
]
urls.py
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('done/', include('done.urls')), #在地址后跟done/,再在done/后接login,logout等等来表示一个接口连接
path('admin/', admin.site.urls),
]
path传递的四个参数
path()函数传递了四个参数,其中两个是必需的: route和view,以及两个可选的参数:kwargs和name。
- route
route是包含URL模式的字符串。在处理请求时,Django从第一个模式开始,urlpatterns然后沿列表向下移动,将请求的URL与每个模式进行比较,直到找到匹配的URL。模式不搜索GET和POST参数或域名。 - view
当Django找到匹配的模式时,它将使用HttpRequest对象作为第一个参数,并从路由中获取的所有“捕获”值作为关键字参数,调用指定的view函数。当然也可使用其他返回对象。 - kwargs
可以在字典中将任意关键字参数传递给目标视图。 - name
命名URL可以在Django中的其他地方(尤其是在模板内部)明确地引用它。这项强大的功能可仅触摸单个文件即可对项目的URL模式进行全局更改。