django-创建第一个项目

这篇博客介绍了如何从零开始使用Django创建一个项目。内容包括安装Django,创建并运行项目,配置首个HTML页面,以及实现登录功能的GET和POST请求。详细步骤涵盖设置环境、定义URL路由、编写视图以及模板文件。
摘要由CSDN通过智能技术生成

目录

 

创建第一个demo

安装django

创建django项目

运行django项目

配置第一个html页面


创建第一个demo

 

安装django

pip安装djnago方法:

pip install - U django #下载最新版本

pip install django==3.1.1 #下载指定版本

pip install -i https://pypi.douban.com/simple/django==3.1.1 #通过豆瓣下载指定django版本

下载whl文件后,进入目录,通过pip install xxxx.whl

下载tar.gz文件后,进入目录,对该文件进行解压,进入解压目录,通过python setup.py install 

 

创建django项目

1、通过django-admin查看运行命令

2、django-admin startproject demo #创建项目,demo为项目名称

目录结构:

demo/demo/__init__.py:一个空文件,用于标识一个目录为python的标准包

demo/demo/settings.py:django项目配置文件,包括django模块应用配置,数据库配置,模板配置等

demo/demo/urls.py:django项目的url申明

demo/demo/wsgi.py:与wsgi兼容的web服务器为你的项目提供服务的入口点

demo/manage.py:命令行工具,使其使用django项目时以不同的方式进行交互,通过python demo/manage.py查看运行命令

3、通过cd切换到demo目录下,django-admin startapp api #创建app名称,api为app的名称

目录结构:

api/migrations:用于记录models中数据的变更

api/admin.py:映射models中的数据,到django自带的admin后台

api/apps.py:用于应用程序的配置,在新的django版本中新增文件

api/models.py:模型文件,创建app数据表模型,对应数据库的相关操作

api/tests.py:django测试用例

api/views.py:django视图文件,控制向前端页面显示的内容,映射接口url

 

运行django项目

1、进入demo目录下,通过python manage.py runserver ip:port

ip可以输入指定的本机ip,通过ipconfig查看;端口输入不冲突的端口就行;这边ip如果输入0.0.0.0代表域网内任意网络可访问;通过settings.py设置

ALLOWED_HOSTS = ["*"]

 

 

配置第一个html页面

1、在demo/settings.py 文件 INSTALLED_APPS 添加api的配置项

#demo/demo/settings.py
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'api',#配置app
]

 

2、在api/views.py 文件创建index接口

#demo/api/views.py
from django.http import HttpResponse

def index(request):
    return HttpResponse("hello,django")

3、在demo/urls.py 文件配置path

#demo/demo/urls.py
from django.contrib import admin
from django.urls import path
from api import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('index/',views.index,name='index')
]

4、通过http://192.168.1.100:8008/index/访问到返回的数据

5、在demo目录下创建,demo/templates/index.html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>django</title>
</head>
<body>
    <h1>hello,django~</h1>
</body>
</html>

6、在api/views.py 文件跳转index.html页面;及demo/settings.py配置TEMPLATES的DIRS,通过http://192.168.1.100:8008/index/访问

#demo/demo/settings.py
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],#配置公用的templates路径,如果在app目录下则不需要指定
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

 

#demo/api/views.py
from django.shortcuts import render

def index(request):
    return render(request,"index.html")

实现一个登录功能get/post

get请求

1、demo/templates/index.html 写个登录的页面,请求方式get请求

<!--demo/templates/index.html-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录页面</title>
</head>
<body>
    <h1>登录页面管理~</h1>
    <form method="get" action="login/">
        <input name="username" type="text" placeholder="username"><br>
        <input name="password" type="password" placeholder="password"><br>
        <button id="btn" type="submit">登录</button>
    </form>
</body>
</html>

2、demo/demo/urls.py修改路由,让ip+端口进入首页,点击登录后执行login接口;demo/api/views.py实现代码

#demo/demo/urls.py
from django.contrib import admin
from django.urls import path
from api import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.index, name='index'),
    path('login/',views.login,name='login')
]
#demo/api/views.py
import json
from django.http import HttpResponse
from django.shortcuts import render

def index(request):
    return render(request,'index.html')

def login(request):
    if request.method == 'GET':
        result = {}
        req = request.GET#拿到请求体
        username = req.get('username')
        password = req.get('password')
        result['code'] = 200
        result['message'] = 'success'
        result['username'] = username
        result['password'] = password
        return HttpResponse(json.dumps(result,ensure_ascii=False),content_type='application/json;charset=utf-8')

 

post请求

1、demo/templates/index.html 写个登录的页面,请求方式get请求

<!--demo/templates/index.html-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录页面</title>
</head>
<body>
    <h1>登录页面管理~</h1>
    <form method="post" action="login2/">
        <input name="username" type="text" placeholder="username"><br>
        <input name="password" type="password" placeholder="password"><br>
        <button id="btn" type="submit">登录</button>
    </form>
</body>
</html>

2、demo/demo/urls.py修改路由,让ip+端口进入首页,点击登录后执行login接口;demo/api/views.py实现代码

#demo/demo/urls.py
from django.contrib import admin
from django.urls import path
from api import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.index, name='index'),
    path('login/',views.login,name='login'),
    path('login2/', views.login2, name='login2'),
]
 

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

3、如果有csrf拦截,则配置demo/demo/settings.py

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    # 'django.middleware.csrf.CsrfViewMiddleware',#注释csrf拦截
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

记录学习的每一天~

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值