不加as_view还能正常使用吗
时间: 2023-12-12 15:02:07 浏览: 37
这个问题需要具体针对什么进行讨论才能回答得更准确。但是一般情况下,如果是在使用 Django 中的类视图时,不加 `as_view` 是不能正常使用的,因为类视图本质上是一个 Python 类,需要通过 `as_view` 方法将其转换为可调用的视图函数。如果你有具体的场景或代码示例,我可以给出更具体的回答。
相关问题
from django.contrib import admin from django.urls import path, include from files.views import IndexView urlpatterns = [ path('admin/', admin.site.urls), path('', IndexView.as_view(), name='index') path('users/', include(('users.urls', 'users'), namespace='users')) path('files/', include(('files.urls', 'files'), namespace='files'))]
这段代码是一个 Django 项目中的 URL 配置。它使用了 Django 的 URL 路由系统,将不同的 URL 映射到对应的视图函数上。
其中,`admin/` 路径映射到 Django 自带的管理后台,`''` 路径映射到 `IndexView` 视图函数,`users/` 路径和 `files/` 路径分别映射到 `users` 应用和 `files` 应用中的 URL 配置。`namespace` 参数指定了应用的命名空间,可以在模板中使用该命名空间来生成 URL。
另外,注意到第 4 行缺少逗号,需要加上逗号才能让代码正常运行。
创建视图view2从sh_goods表中查询出id,name。权限控制为test用户,且默认安全控制由定义视图的用户权限来执行
首先,以定义视图的用户(假设为user1)登录数据库,并授权test用户访问sh_goods表:
```
GRANT SELECT ON sh_goods TO test;
```
然后,在user1的会话中创建视图view2,查询sh_goods表中的id和name:
```
CREATE VIEW view2 AS
SELECT id, name
FROM sh_goods;
```
默认情况下,视图是使用定义视图的用户的权限进行安全控制的。因此,test用户只能访问视图view2中的数据,而不能直接访问sh_goods表。
测试视图是否能正常查询数据,可以在test用户的会话中执行以下语句:
```
SELECT * FROM user1.view2;
```
如果返回了sh_goods表中的id和name字段,说明视图创建成功并且安全控制生效了。