使用数据向 NextJS 发送 Django 请求
Sending Django requests to NextJS with data
我正在考虑将 NextJS 集成到现有的 Django 项目中。该项目的大部分页面都大量使用 Django 模板,我正在考虑通过利用 React 和构建设计/组件系统来使项目现代化。这个想法是我们最终会考虑用 NextJS 替换 Django。
我已经能够使用 Django 将请求代理到 NextJS,而且效果很好!我还能够将数据直接发送到 NextJS 路由,这样我就不必回调 Django 来获取数据。令人讨厌的是,这种方法具有仅发送 key/value 数据的限制。
这是工作代码。
# django
def get(self, request, *args, **kwargs):
data = request.GET
return self._handle_request(data, requests.post)
def _handle_request(self, data, make_request):
data = {"hello": "world"}
response = make_request("http://localhost:3000", data=data)
return HttpResponse(response)
//nextjs
import parse from "urlencoded-body-parser";
export async function getServerSideProps(context) {
const { req } = context;
const props = await parse(req);
return { props };
};
考虑到这一点,是否有更好的方法来实现将数据发送到 NextJS 路由而无需执行回调?
经过一些研究,我能够通过使用 application/json
内容类型来实现这一点。
class NextJsView(WhiteLabelMixin, View):
def get(self, request, *args, **kwargs):
data = request.GET
return self._handle_request(data, requests.post)
def _handle_request(self, data, make_request):
data = {"hello": {"dark": "world"}}
response = make_request("http://localhost:3000", json=json.dumps(data))
return HttpResponse(response)
import getRawBody from "raw-body";
export async function getServerSideProps(context) {
const { req } = context;
let props = {};
if (req.method == "POST") {
const body = await getRawBody(req);
props = JSON.parse(JSON.parse(body));
}
return { props };
}
我正在考虑将 NextJS 集成到现有的 Django 项目中。该项目的大部分页面都大量使用 Django 模板,我正在考虑通过利用 React 和构建设计/组件系统来使项目现代化。这个想法是我们最终会考虑用 NextJS 替换 Django。
我已经能够使用 Django 将请求代理到 NextJS,而且效果很好!我还能够将数据直接发送到 NextJS 路由,这样我就不必回调 Django 来获取数据。令人讨厌的是,这种方法具有仅发送 key/value 数据的限制。
这是工作代码。
# django
def get(self, request, *args, **kwargs):
data = request.GET
return self._handle_request(data, requests.post)
def _handle_request(self, data, make_request):
data = {"hello": "world"}
response = make_request("http://localhost:3000", data=data)
return HttpResponse(response)
//nextjs
import parse from "urlencoded-body-parser";
export async function getServerSideProps(context) {
const { req } = context;
const props = await parse(req);
return { props };
};
考虑到这一点,是否有更好的方法来实现将数据发送到 NextJS 路由而无需执行回调?
经过一些研究,我能够通过使用 application/json
内容类型来实现这一点。
class NextJsView(WhiteLabelMixin, View):
def get(self, request, *args, **kwargs):
data = request.GET
return self._handle_request(data, requests.post)
def _handle_request(self, data, make_request):
data = {"hello": {"dark": "world"}}
response = make_request("http://localhost:3000", json=json.dumps(data))
return HttpResponse(response)
import getRawBody from "raw-body";
export async function getServerSideProps(context) {
const { req } = context;
let props = {};
if (req.method == "POST") {
const body = await getRawBody(req);
props = JSON.parse(JSON.parse(body));
}
return { props };
}