如何从 Angular 7 访问 Django 方法
How to access a Django method from Angular 7
我对全栈开发还很陌生,所以这实际上可能是一个简单的问题:
我希望能够访问我的 Django 后端的 models.py 文件中的一个简单方法:
def testMethodFromModelPY(request, path=''):
data = {'returnedData': 'whatever'}
return data
我在urls.py中添加方法的路径:
from django.urls import path
from DjangoBackEnd import models
urlpatterns = [
# some other paths here that frontend is able to access #
path(r'api/v1/', models.testMethodFromModelPY, name='testMethodFromModelPY'),
]
现在,在 Angular 前端中,我在 app 文件夹中创建了一个名为 config 的组件,并将其添加到 config.service.ts
export interface Test {
returnedData: string;
}
@Injectable()
export class ConfigService {
constructor(private http: HttpClient) { }
testMethodInConfigServiceTS() {
return this.http.get('/api/v1/testMethodFromModelPY/');
}
}
我在 app.module.ts 中包含此服务,并在 [=51= 中调用 testMethodInConfigServiceTS 函数]:
testMethodInConfigComponentTS() {
this.configService.testMethodInConfigServiceTS()
.subscribe(
(data: Test) => this.test = { ...data }, // success path
error => this.error = error // error path
);
}
在 config.component.html 中,我尝试使用以下方法访问此方法:
<button (click)="testMethodInConfigComponentTS()">teststuffhere</button>
但是当我点击一个按钮时,我得到了错误消息:
GET http://127.0.0.1:8000/api/v1/testMethodFromModelPY/ 404 (Not Found)
非常感谢!
创建 API 并使用 angular
发送一些请求
Django Rest Framework 设置简单快捷
https://www.django-rest-framework.org/
所以您正在寻找的是 angular -> url -> view -> model
,但您的逻辑似乎缺少视图。
让我们分解一下。
向您的 Django 应用程序添加一个视图。 Django 视图是允许您处理 http 请求的函数 and/or 类。他们是由您的 urls
呼叫的。您可以阅读更多关于它们的信息 here。例如,您的视图可能如下所示:
from django.http import HttpResponse
from DjangoBackEnd import models
def test_view(request):
output = models.testMethodFromModelPY()
return HttpResponse(output)
将您的观点映射到您的 url 文件中。
from django.urls import path
from .views import test_view
urlpatterns = [
# some other paths here that frontend is able to access #
path(r'api/v1/', test_view, name='testMethodFromModelPY'),
]
现在您可以点击 example-domain.com/api/v1/
,这应该会为您提供模型中测试函数的输出。请注意,我没有添加 url 又名 name='testMethodFromModelPY'
的名称,因为它在您的模板 Jinja 代码和 Djangos 内部构件中用作参考。您可以阅读有关 urls here.
的更多信息
说你必须修改你的端点:
testMethodInConfigServiceTS() {
return this.http.get('/api/v1/testMethodFromModelPY/');
}
至
testMethodInConfigServiceTS() {
return this.http.get('/api/v1/');
}
看看 djangorestframework 这是一个很棒的工具箱,适用于 api 驱动的应用程序和 django 后端。
祝你好运!
我对全栈开发还很陌生,所以这实际上可能是一个简单的问题:
我希望能够访问我的 Django 后端的 models.py 文件中的一个简单方法:
def testMethodFromModelPY(request, path=''):
data = {'returnedData': 'whatever'}
return data
我在urls.py中添加方法的路径:
from django.urls import path
from DjangoBackEnd import models
urlpatterns = [
# some other paths here that frontend is able to access #
path(r'api/v1/', models.testMethodFromModelPY, name='testMethodFromModelPY'),
]
现在,在 Angular 前端中,我在 app 文件夹中创建了一个名为 config 的组件,并将其添加到 config.service.ts
export interface Test {
returnedData: string;
}
@Injectable()
export class ConfigService {
constructor(private http: HttpClient) { }
testMethodInConfigServiceTS() {
return this.http.get('/api/v1/testMethodFromModelPY/');
}
}
我在 app.module.ts 中包含此服务,并在 [=51= 中调用 testMethodInConfigServiceTS 函数]:
testMethodInConfigComponentTS() {
this.configService.testMethodInConfigServiceTS()
.subscribe(
(data: Test) => this.test = { ...data }, // success path
error => this.error = error // error path
);
}
在 config.component.html 中,我尝试使用以下方法访问此方法:
<button (click)="testMethodInConfigComponentTS()">teststuffhere</button>
但是当我点击一个按钮时,我得到了错误消息:
GET http://127.0.0.1:8000/api/v1/testMethodFromModelPY/ 404 (Not Found)
非常感谢!
创建 API 并使用 angular
发送一些请求Django Rest Framework 设置简单快捷 https://www.django-rest-framework.org/
所以您正在寻找的是 angular -> url -> view -> model
,但您的逻辑似乎缺少视图。
让我们分解一下。
向您的 Django 应用程序添加一个视图。 Django 视图是允许您处理 http 请求的函数 and/or 类。他们是由您的
urls
呼叫的。您可以阅读更多关于它们的信息 here。例如,您的视图可能如下所示:from django.http import HttpResponse from DjangoBackEnd import models def test_view(request): output = models.testMethodFromModelPY() return HttpResponse(output)
将您的观点映射到您的 url 文件中。
from django.urls import path from .views import test_view urlpatterns = [ # some other paths here that frontend is able to access # path(r'api/v1/', test_view, name='testMethodFromModelPY'), ]
现在您可以点击 example-domain.com/api/v1/
,这应该会为您提供模型中测试函数的输出。请注意,我没有添加 url 又名 name='testMethodFromModelPY'
的名称,因为它在您的模板 Jinja 代码和 Djangos 内部构件中用作参考。您可以阅读有关 urls here.
说你必须修改你的端点:
testMethodInConfigServiceTS() {
return this.http.get('/api/v1/testMethodFromModelPY/');
}
至
testMethodInConfigServiceTS() {
return this.http.get('/api/v1/');
}
看看 djangorestframework 这是一个很棒的工具箱,适用于 api 驱动的应用程序和 django 后端。
祝你好运!