Python-Django初体验—创建Django项目并实现页面跳转功能


前言

关于Python-Django创建新项目,并实现页面跳转功能。一个较简单的实战。

python 3.8
django 3.2


一、创建流程

1.准备工作

1.打开PyCharm,新建Django项目

在这里插入图片描述
这里建议选择虚拟环境,打包方便,环境干净

生成目录:
在这里插入图片描述
Django目录介绍:

1.urls.py:网址入口,关联到对应的views.py中的一个函数(或generic类),访问网址就对应一个函数。
2.views.py:处理用户发出的请求,与urls.py对应, 通过渲染templates中的网页可以将显示内容,如登陆后的用户名,用户请求的数据等输出到网页。
3.models.py:与数据库操作相关,存入或读取数据时用到,用不到数据库时可以不使用。
4.templates文件夹:views.py中的函数渲染templates中的html模板,得到动态内容的网页,可以用缓存来提高速度。
5.admin.py:后台,可以用很少的代码就拥有一个强大的后台。
6.settings.py:Django 的配置文件,如 DEBUG 的开关,静态文件的位置等。

2.创建应用

> python manage.py startapp pyapp

在这里插入图片描述

3.注册应用

在setting.py中的INSTALLED_APPS = [ ]中加入刚创建的app-‘pyapp’

在这里插入图片描述

4.连接数据库

1.开启数据库,创建数据库‘mytest’

2.安装mysql驱动

> pip install mysqlclient

3.在setting.py中的DATABASES = { } 中配置如下

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mytest',  #连接库名
        'USER': 'root',   #数据库名
        'PASSWORD': 'root',  #数据库密码
        'HOST': 'localhost',
        'PORT': '3306',
    }
}

在这里插入图片描述

5.生成迁移文件并执行迁移

> python manage.py makemigrations
> python manage.py migrate

6.启动项目

> python manage.py runserver

2.建立第一个Django项目

1.主页-index.html与跳转页-hello.html

  1. index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>index</title>
</head>
<body>
<h1>hello index</h1>
<a href="/pyapp/hello_view">hello1</a>
</body>
</html>

在这里插入图片描述

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

在这里插入图片描述

2.主路由-./urls.py

from django.urls import path, include
from pyapp import views

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

    path('pyapp/', include('pyapp.urls')),  # hello

]

在这里插入图片描述

3.从路由-pyapp/urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('hello_view', views.hello_view, name='hello_view'),
]

在这里插入图片描述

4.视图-pyapp/views.py

from django.shortcuts import render

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

def hello_view(request):
    return render(request, 'hello.html')

在这里插入图片描述

3.Django运行流程简述

1.当从a.html请求到b.html时,即为从a.html跳转到某一视图views.py;该视图中写有去往b.html的方法,一般用render函数;
2.而从a.html去往视图views.py时,需要配置路由urls.py
3.每次找路由的请求都先找到主路由urls.py,可以在主路由中通过include方法增加从路由urls.py,从路由指每个小应用中的内置路由。

注意:要写清楚主、从路由地址,新手容易出现404请求错误,此错误较容易解决,找清楚路由流向就可以。

二、非PyCharm下的Django项目创建

1.windows命令行模式

1.安装Django

pip install Django

2.创建项目

django-admin startproject mytest

3.创建应用

python manage.py startapp myapp

4.生成迁移文件

python manage.py makemigrations

4.生成迁移文件

python manage.py migrate

2.Linux命令行模式

1.安装Django

apt install python3-django

2.创建项目

django-admin startproject mytest

3.创建应用

python3 manage.py startapp myapp

4.生成迁移文件

python3 manage.py makemigrations

4.生成迁移文件

python3 manage.py migrate

三、基础报错记录

1.PyCharm新建项目后直接启动服务会报错

(venv) E:\test\test01>python manage.py runserver 9999
Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    main()
  File "manage.py", line 18, in main
    execute_from_command_line(sys.argv)
  File "E:\test\test01\venv\lib\site-packages\django\core\management\__init__.py", line 446, in execute_from_command_line
    utility.execute()
  File "E:\test\test01\venv\lib\site-packages\django\core\management\__init__.py", line 386, in execute
    settings.INSTALLED_APPS
  File "E:\test\test01\venv\lib\site-packages\django\conf\__init__.py", line 87, in __getattr__
    self._setup(name)
  File "E:\test\test01\venv\lib\site-packages\django\conf\__init__.py", line 74, in _setup
    self._wrapped = Settings(settings_module)
  File "E:\test\test01\venv\lib\site-packages\django\conf\__init__.py", line 183, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
  File "D:\Program Files\Python\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 848, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "E:\test\test01\test01\settings.py", line 57, in <module>
    'DIRS': [os.path.join(BASE_DIR, 'templates')]
NameError: name 'os' is not defined

解决:在setting.py文件中加上 import os

在这里插入图片描述


总结

首先感谢各位师傅优秀的教学视频:

1.好评如潮Python Django全套教程:https://www.bilibili.com/video/BV1pq4y1W7a1
2.2021最新版Django全套视频:https://www.bilibili.com/video/BV1vK4y1o7jH
3.2021年最新Pycharm开发环境搭建:https://www.bilibili.com/video/BV1aN411o7Ei

我在今年年初时因毕设缘故开始学习Python-Django。个人基础有在大三时的“网络编程-python”的课程与“移动开发基础-Java Web”,但没有过多接触过Python Web,也不太理解“框架”的概念。经过一段时间的学习,让我对Python-Django有了更深刻的体会,因为有“视图”与“路由”的存在,刚开始写页面跳转时经常报错,觉得非常凌乱。但是,多写多测试果然还是最好的解决方案。
目前项目工程已经写到如下代码量。不要害怕遇到Bug,要享受解决Bug的过程,一切努力过后的收获都是巨大的。加油,给自己打气!
在这里插入图片描述
2022年4月4日于家中

  • 14
    点赞
  • 96
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
实现登录后跳转到新页面,可以按照以下步骤进行: 1. 在 `views.py` 中编写处理登录请求的视图函数,例如: ```python from django.shortcuts import render, redirect from django.contrib.auth import authenticate, login def login_view(request): if request.method == 'POST': username = request.POST['username'] password = request.POST['password'] user = authenticate(request, username=username, password=password) if user is not None: login(request, user) return redirect('new_page') else: error_message = '用户名或密码错误' else: error_message = '' return render(request, 'login.html', {'error_message': error_message}) ``` 2. 在 `urls.py` 中配置登录页面和新页面的 URL,例如: ```python from django.urls import path from . import views urlpatterns = [ path('login/', views.login_view, name='login'), path('new_page/', views.new_page_view, name='new_page'), ] ``` 3. 在登录页面(`login.html`)中编写表单,例如: ```html <form method="post"> {% csrf_token %} <label for="username">用户名:</label> <input type="text" name="username" id="username"> <br> <label for="password">密码:</label> <input type="password" name="password" id="password"> <br> <input type="submit" value="登录"> {% if error_message %} <p>{{ error_message }}</p> {% endif %} </form> ``` 4. 在新页面(`new_page.html`)中编写内容。 这样,当用户在登录页面输入正确的用户名和密码并点击登录按钮后,会被重定向到新页面。如果输入的用户名或密码错误,则会在登录页面显示错误信息。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微雨停了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值