Django(基于Pycharm)-基础使用

创建项目

创建项目

文件->新建项目->django->项目配置->完成

各个文件的含义

downer/
    manage.py
    downer/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py
  1. downer/:项目容器
  2. manage.py:与Django项目交互的程序
  3. downer/downer/:项目实际所在的python包
  4. init.py:空文件,告诉Python该目录应视为Python软件包
  5. settings.py:项目的设置/配置
  6. urls.py:项目的URL声明;Django支持的网站的“目录”
  7. asgi.py:与ASGI兼容的Web服务器为项目提供服务的入口点
  8. 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
  1. models: 用于创建数据库的模板
  2. 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一起提供:

  1. django.contrib.admin–管理站点。您将很快使用它。
  2. django.contrib.auth –认证系统。
  3. django.contrib.contenttypes –内容类型的框架。
  4. django.contrib.sessions –会话框架。
  5. django.contrib.messages –消息传递框架。
  6. 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。

  1. 首先,在doner目录创建一个urls.py文件,然后导入视图views。
  2. 然后将根URLconf指向该done.urls模块。在中 downer/urls.py,添加导入django.urls.include并将其插入 include()到urlpatterns列表中。
    include()的功能:允许引用其他URLconf。每当Django遇到时include(),它都会截断直到该点匹配的URL的任何部分,并将剩余的字符串发送到包含的URLconf中以进行进一步处理。
    其背后的想法include()是简化URL的即插即用。
  3. 运行程序
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()函数传递了四个参数,其中两个是必需的: routeview,以及两个可选的参数:kwargsname

  1. route
    route是包含URL模式的字符串。在处理请求时,Django从第一个模式开始,urlpatterns然后沿列表向下移动,将请求的URL与每个模式进行比较,直到找到匹配的URL。模式不搜索GETPOST参数或域名。
  2. view
    当Django找到匹配的模式时,它将使用HttpRequest对象作为第一个参数,并从路由中获取的所有“捕获”值作为关键字参数,调用指定的view函数。当然也可使用其他返回对象。
  3. kwargs
    可以在字典中将任意关键字参数传递给目标视图。
  4. name
    命名URL可以在Django中的其他地方(尤其是在模板内部)明确地引用它。这项强大的功能可仅触摸单个文件即可对项目的URL模式进行全局更改。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值