我对全栈开发很陌生,所以这实际上可能是一个简单的问题:
我希望能够访问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前端中,我在应用程序文件夹中创建了一个名为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中,并调用config.component.ts的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)
非常感谢!
所以您要查找的是angular -> url -> view -> model
,但您的逻辑中似乎缺少视图。
让我们把它分解一下。
-
向django应用程序添加视图。Django视图是允许您处理http请求的函数和/或类。他们是由你的
urls
呼叫的。你可以在这里阅读更多关于他们的信息。例如,您的视图可能如下所示: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代码和Django内部用作参考。你可以在这里阅读更多关于url的信息。
说你必须修改你的终点:
testMethodInConfigServiceTS() {
return this.http.get('/api/v1/testMethodFromModelPY/');
}
至
testMethodInConfigServiceTS() {
return this.http.get('/api/v1/');
}
看看djangorestframework,它是一个很好的工具箱,用于具有django后端的api驱动的应用程序。
祝你好运!
制作一个API并发送一些带有角度的请求
Django Rest框架易于快速设置https://www.django-rest-framework.org/