Python常见知识点和面试题总结(下)

Python有哪些web架构

  • Flask 是一个轻量级的 Python Web 开发框架,它基于 Werkzeug WSGI 工具箱和 Jinja2 模板引擎构建,提供了灵活的配置和扩展机制,适用于开发各种类型的 Web 应用程序,从简单的静态网站到复杂的 RESTful API 都可以使用 Flask 实现。
  • Django 是一个全功能的 Python Web 开发框架,它提供了完整的 MVC 架构,包括模型层、视图层和控制器层,同时还提供了丰富的内置组件,如 ORM、模板引擎、表单处理、认证和授权等,适用于开发复杂的 Web 应用程序和内容管理系统。

总的来说,Flask 和 Django 都是 Python Web 开发框架,但它们的定位和功能略有不同。Flask 更加轻量级、灵活和简单,适合开发小型 Web 应用程序和快速原型开发;Django 则更加全面、完整和强大,适合开发大型 Web 应用程序和内容管理系统。

Flask 和 Django 的区别是什么?

Flask 和 Django 都是 Python 的 Web 开发框架,但是它们有一些区别:

  • Flask 是一个轻量级的框架,代码量较少,适合小型应用,而 Django 是一个重量级的框架,代码量较多,适合大型应用。
  • Flask 提供的功能较少,需要通过扩展来实现一些高级功能,而 Django 自带大量的功能和模块,可以直接使用。
  • Flask 的路由系统更加灵活,支持正则表达式等高级特性,而 Django 的路由系统较为简单。
  • Flask 的模板引擎 Jinja2 支持更加灵活的模板继承和自定义过滤器,而 Django 的模板引擎则更加强大和智能。

Flask 是什么?它的特点是什么?

Flask 是一个轻量级的 Python Web 开发框架,它基于 Werkzeug WSGI 工具箱和 Jinja2 模板引擎构建。Flask 的特点包括:

  • 轻量级:Flask 的代码量较少,核心功能简单明了,易于学习和使用。
  • 灵活性:Flask 提供了灵活的配置和扩展机制,开发者可以根据需要灵活地扩展自己的应用。
  • 易于测试:Flask 的代码结构清晰,可以方便地进行单元测试和集成测试。
  • 适用范围广:Flask 适用于开发各种类型的 Web 应用,从简单的静态网站到复杂的 RESTful API 都可以使用 Flask 实现。

Flask 中的模板引擎是什么?如何使用?

Flask 中的模板引擎是 Jinja2,它是一个现代化的、功能强大的 Python 模板引擎。使用 Flask 中的模板引擎可以方便地将动态数据渲染到 HTML 页面中。

在 Flask 中,可以通过 render_template 函数来渲染模板。首先需要在 Flask 应用对象中设置模板路径,然后通过 render_template 函数来渲染模板。例如:

from flask import Flask, render_template

app = Flask(__name__)
app.config['TEMPLATES_AUTO_RELOAD'] = True
app.template_folder = 'templates'

@app.route('/')
def index():
    name = 'John'
    return render_template('index.html', name=name)

在模板文件中,可以使用 Jinja2 的语法来插入动态数据,例如:

<!DOCTYPE html>
<html>
<head>
    <title>Flask Template</title>
</head>
<body>
    <h1>Hello, {{ name }}!</h1>
</body>
</html>

Flask 中如何处理请求和响应?

在 Flask 中,可以使用装饰器来定义路由和处理请求。例如:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return 'Hello World!'

在上面的例子中,@app.route('/') 装饰器定义了一个路由,当用户访问根路径时,会调用 index 函数来处理请求。处理函数可以返回字符串、HTML 页面或者 JSON 数据等不同类型的响应。

Flask 中如何处理表单数据?

在 Flask 中,可以通过 request 对象来获取表单数据。例如:

from flask import Flask, request

app = Flask(__name__)

@app.route('/login', methods=['POST'])
def login():
    username = request.form['username']
    password = request.form['password']
    # 验证用户名和密码
    # ...
    return 'Login Success!'

在上面的例子中,当用户提交登录表单时,会将表单数据作为 POST 请求发送到 /login 路由,request.form 属性可以获取表单数据。开发者可以根据表单数据进行验证和处理,并返回相应的响应。

Flask 中如何实现用户认证和授权?

在 Flask 中,可以使用 Flask-Login 扩展来实现用户认证和授权。Flask-Login 提供了一个 UserMixin 类,用于实现用户认证和授权的功能。开发者可以通过继承 UserMixin 类来创建用户模型,并使用 Flask-Login 提供的装饰器来限制用户的访问权限。例如:

from flask import Flask
from flask_login import LoginManager, login_required, login_user, logout_user, UserMixin

app = Flask(__name__)
app.secret_key = 'secret'

# 创建 LoginManager 对象
login_manager = LoginManager(app)

# 创建用户模型
class User(UserMixin):
    def __init__(self, id, username, password):
        self.id = id
        self.username = username
        self.password = password

    def get_id(self):
        return self.id

    @classmethod
    def get(cls, id):
        # 根据 ID 获取用户对象
        return cls(id, 'user', 'password')

# 定义登录视图
@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        # 获取表单数据
        username = request.form['username']
        password = request.form['password']

        # 验证用户名和密码
        user = User.get(1)
        if user and user.password == password:
            login_user(user)
            return redirect('/dashboard')

    return render_template('login.html')

# 定义注销视图
@app.route('/logout')
@login_required
def logout():
    logout_user()
    return redirect('/login')

# 定义受保护的视图
@app.route('/dashboard')
@login_required
def dashboard():
    return render_template('dashboard.html')

Django 是什么?它的特点是什么?

Django 是一个开源的 Python Web 开发框架,它提供了完整的 MVC 架构,包括模型层、视图层和控制器层,同时还提供了丰富的内置组件,如 ORM、模板引擎、表单处理、认证和授权等。Django 的特点包括:

  • 全功能性:Django 提供了完整的 MVC 架构和丰富的内置组件,可以快速搭建功能完整、安全可靠的 Web 应用程序和内容管理系统。
  • 高效性:Django 使用缓存和优化技术,可以提高 Web 应用程序的性能和响应速度。
  • 易于扩展:Django 提供了灵活的配置和扩展机制,可以轻松添加和扩展功能。
  • 易于部署:Django 适用于各种 Web 服务器和数据库,可以方便地部署到生产环境中。
  • 社区活跃:Django 拥有庞大的社区和生态系统,可以快速获取帮助和解决问题。

Django 中的模型是什么?如何使用?

在 Django 中,模型是与数据库相关联的 Python 类,用于定义数据结构和行为。模型可以自动创建数据库表、字段和约束,同时还提供了丰富的 ORM 方法,方便开发者进行数据的操作和查询。

在 Django 中,可以通过定义继承自 django.db.models.Model 的 Python 类来创建模型,例如:

from django.db import models

class Product(models.Model):
    name = models.CharField(max_length=100)
    price = models.DecimalField(max_digits=8, decimal_places=2)
    description = models.TextField()

    def __str__(self):
        return self.name

在上面的例子中,定义了一个 Product 模型,它包括了 name、price 和 description 三个字段。可以使用 Django 的 ORM 方法来进行数据的操作和查询,例如:

# 创建一个新的 Product 对象
product = Product(name='iPhone', price=999.00, description='Apple iPhone')

# 保存 Product 对象到数据库
product.save()

# 查询所有的 Product 对象
products = Product.objects.all()

# 根据条件查询 Product 对象
product = Product.objects.get(name='iPhone')

Django 中如何处理请求和响应?

在 Django 中,可以使用视图函数来处理请求和响应。视图函数通常接收一个 HTTP 请求对象,并返回一个 HTTP 响应对象。Django 支持多种类型的响应,如 HTML 页面、JSON 数据、文件等。

在 Django 中,可以通过定义继承自 django.views.View 的 Python 类来创建视图函数,例如:

from django.views import View
from django.http import HttpResponse

class IndexView(View):
    def get(self, request):
        return HttpResponse('Hello World!')

在上面的例子中,定义了一个 IndexView 视图函数,它在收到 GET 请求时返回一个包含字符串 'Hello World!' 的 HTTP 响应对象。

Django 中如何处理表单数据?

在 Django 中,可以使用表单类来处理表单数据。表单类通常继承自 django.forms.Form 或 django.forms.ModelForm 类,用于定义表单字段和验证规则。

在 Django 中,可以使用视图函数来处理表单数据。视图函数通常接收一个 HTTP 请求对象,并根据请求方法(GET 或 POST)来处理表单数据。

例如,以下是一个包含一个文本框和一个提交按钮的 HTML 表单:

<form method="post" action="{% url 'contact' %}">
    {% csrf_token %}
    <label for="name">Name:</label>
    <input type="text" name="name" id="name">
    <input type="submit" value="Submit">
</form>

在 Django 中,可以使用以下代码来定义表单类和视图函数来处理表单数据:

from django import forms
from django.views import View
from django.shortcuts import render, redirect

class ContactForm(forms.Form):
    name = forms.CharField()

class ContactView(View):
    def get(self, request):
        form = ContactForm()
        return render(request, 'contact.html', {'form': form})

    def post(self, request):
        form = ContactForm(request.POST)
        if form.is_valid():
            name = form.cleaned_data['name']
            # 处理表单数据
            return redirect('success')
        else:
            return render(request, 'contact.html', {'form': form})

在上面的例子中,定义了一个 ContactForm 表单类,它包括了一个名为 name 的文本字段。定义了一个 ContactView 视图函数,它在 GET 请求时返回一个包含表单的 HTML 页面,在 POST 请求时验证表单数据并进行相应的处理。

Flask 和 Django 都支持哪些数据库?

Flask 和 Django 都支持多种数据库,包括 MySQL、PostgreSQL、SQLite、Oracle 等。Flask 通过 SQLAlchemy 或者其他 ORM 框架来支持多种数据库,而 Django 则自带 ORM 框架,可以直接连接多种数据库。

#Python##23届找工作求助阵地#
计算机求职指南 文章被收录于专栏

如果你正在寻找一份全面的计算机专业求职攻略,那么这篇专栏是你不容错过的宝藏! 这篇攻略涵盖了校招时间表、求职攻略、简历制作、自我介绍、基础知识、求职信息及渠道、面试攻略及经验、关于offer和三方、关于签约你要知道的事情、职业发展等方面的资料,内容非常全面。 除此之外,还提供了前端、后端和算法等方面的基础知识,并且汇总了许多求职信息和渠道。

全部评论

相关推荐

12-08 18:59
东北大学 Java
Java抽象带篮子:外卖项目可以看看我的详细的外卖话术,里面还写了怎么描述项目,还为了提高含金量额外增加了很多技术亮点呢。另外我这边还有个7000多字的轮子项目话术,可以狠狠的速成,需要的似我
点赞 评论 收藏
分享
评论
7
92
分享
牛客网
牛客企业服务