django 的基本函数

变量用 {{}} 包含在里面
python 语句用{%%}来包含
常见的一些语句:

1. {% for %} 允许我们在一个序列上迭代。与Python的 for 语句的情形类似,循环语法是 for X in Y ,Y是要迭代的序列而X是在每一个特定的循环中使用的变量名称。(给标签增加一个 reversed 使得该列表被反向迭代,可以嵌套使用循环)
  1.1 forloop.counter 总是一个表示当前循环的执行次数的整数计数器。这个计数器是从1开始的,
所以在第一次循环时 forloop.counter 将会被设置为1。
  1.2 forloop.revcounter 是表示循环中剩余项的整型变量。
  1.3 forloop.first 是一个布尔值。在第一次执行循环时该变量为True,
  1.4 forloop.last 是一个布尔值;在最后一次执行循环时被置为True。
2. {% if %} 标签检查(evaluate)一个变量,如果这个变量为真(即,变量存在,非空,不是布尔值
假),系统会显示在 {% if %} 和 {% endif %} 之间的任何内容
3. {% ifequal %} 标签比较两个值,当他们相同时,显示在 {% ifequal %} 和 {% endifequal %} 之中所有的值。(如Python的字典类型、列表类型、布尔类型,不能用在 {% ifequal %} 中)


4. 内建标签 {% include %}
{% include 'nav.html' %}   ###该标签允许在(模板中)包含其它的模板的内容。标签的参数是所要包含的模板名称,可以是一个变量,也可以是用单/双引号硬编码的字符串。
5. 继承
  {% block %} 。 所有的 {% block %} 标签告诉模板引擎,子模板可以重载这些部分。子模板要继承母版要{% extends "母版.html" %}


数据库层面的基本函数:
1. 所有的模型(在models里面定义的class)都会自动的有一个object管理器,并且每一个都会有一个all()的方法。
2. filter 是一个根据关键字参数来转换为 where的sql语句 eg:  Publisher.objects.filter(country="U.S.A.", state_province="CA")
3. 获得单个对象用 get()方法 eg: Publisher.objects.get(country="U.S.A.")
4. order_by () 方法可以定义排列顺序的关键字, 关键字前面加—号表示倒序,有时候为了方便直接在模型里面定义排列的缺省模式 eg: 在相应的模型 建立Meta类 加入 ordering=[排序关键字]
5. 限制返回的数据 可以在all()方法后面加一个元组:Publisher.objects.all()[5]
6. 删除对象 直接调用delete()方法 eg: p.delete() *p为记录
7. 删除字段 ALTER TABLE name DROP COLUMN num_pages;
8. 删除manytomany字段 DROP TABLE books_books_publishers;
9. 删除模型 DROP TABLE books_book;

### Django 视图函数参数 `request` 的作用 在 Django 框架中,视图函数的第一个参数始终是 `request`,它是一个 `HttpRequest` 对象,用于封装客户端发送到服务器的 HTTP 请求信息。通过 `request` 参数,视图函数可以访问请求的元数据、用户信息、请求方法、请求参数等关键内容,并根据这些信息生成相应的响应。 #### 1. 获取请求的基本信息 `request` 对象包含关于请求的协议、方法、路径等元数据。例如: - `request.scheme` 可以获取请求使用的协议(如 `http` 或 `https`)[^5]。 - `request.method` 用于判断当前请求的方法(如 `GET`、`POST` 等)。 - `request.path` 提供当前请求的 URL 路径。 ```python def example_view(request): if request.method == 'GET': return HttpResponse("This is a GET request.") elif request.method == 'POST': return HttpResponse("This is a POST request.") ``` #### 2. 获取请求参数 `request` 提供了访问请求参数的接口,包括 `GET` 和 `POST` 请求中的数据: - `request.GET` 返回一个 `QueryDict` 对象,用于获取 URL 查询参数(即 `?key=value` 形式的参数)。 - `request.POST` 也返回一个 `QueryDict` 对象,用于获取 POST 请求中的表单数据或 JSON 数据。 ```python def add(request): a = request.GET.get('a', 0) b = request.GET.get('b', 0) result = int(a) + int(b) return HttpResponse(str(result)) ``` #### 3. 判断请求类型 `request` 对象提供了 `is_ajax()` 方法,用于判断当前请求是否为异步请求(即是否通过 AJAX 发起): ```python def ajax_view(request): if request.is_ajax(): return HttpResponse("This is an AJAX request.") else: return HttpResponse("This is a regular request.") ``` #### 4. 获取用户信息 `request.user` 可以直接获取当前登录的用户对象,这对于实现用户权限控制、个性化内容展示等功能非常关键: ```python def user_profile(request): if request.user.is_authenticated: return HttpResponse(f"Welcome, {request.user.username}!") else: return HttpResponse("Please log in.") ``` #### 5. 在类视图中使用 `request` 在 Django 的类视图中,`request` 通常通过 `self.request` 访问。例如,在 `get()` 或 `post()` 方法中可以直接使用 `self.request` 获取请求对象: ```python from django.views import View from django.http import HttpResponse class ExampleClassView(View): def get(self, request, *args, **kwargs): return HttpResponse("Class-based view response.") ``` 此外,`dispatch()` 方法负责将请求分发到相应的处理方法(如 `get()`、`post()` 等),在此方法中也可以访问 `request` 对象。 --- ### 总结 `request` 参数在 Django 视图函数中扮演着核心角色,它不仅封装了客户端请求的所有信息,还为视图函数提供了访问用户、请求方法、参数和上下文的能力。通过 `request`,开发者可以灵活地处理不同类型的请求,并生成动态响应。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值