django - 用户在 Django Rest 框架中发送发布请求时如何返回 html 页面
问题描述
我想返回一个 HTML 页面,其中包含用户在 django restframework 中发布的值
我创建的模型是
class DetailView(viewsets.ModelViewSet):
queryset= Detail.objects.all()
serializer_class = DetailSerializer
@action(methods=['GET'],detail=False)
def get(self,request):
first_name= request.POST.get("first_name")
last_name = request.POST.get("last_name")
return redirect ('index.html/')
url: router = routers.DefaultRouter() router.register('detail',views.DetailView)
index.html: {{first_name}}
{{last_name}}
我想自动返回一个 html 页面,其中包含他们发布的值
解决方案
我认为必须在 post 方法中定义,而不是在 get 方法中。我假设您要发布表格给出的数据。在我看来,这将是一种适用的方式:
视图.py
class DetailView(viewsets.ModelViewSet):
form_class = PersonalDataForm # defined in forms.py
view_template = 'index.html'
def post(self, request, *args, **kwargs):
form = self.form_class(request.POST)
if form.is_valid():
personal_data = {}
first_name = form.cleaned_data['first_name']
personal_data['first_name'] = first_name
last_name = form.cleaned_data['last_name']
personal_data['last_name'] = last_name
return render(request, self.view_template, {'form': form, 'personal_data': personal_data}
索引.html
<form action="" method="POST">
{% csrf_token %}
{{ form.first_name }}
{{ form.last_name }}
<button type="submit" id="submit-button">save</button>
</form>
{{ personal_data.first_name }}
{{ personal_data.last_name }}
如果用户发送 GET 请求,您可能希望隐藏表单。您可以通过将 wohle 表单包装到 if 子句中来做到这一点,例如 {% if valid_data_submitted %} ... {% endif %}
表格.py
class PersonalDataForm(forms.ModelForm):
first_name = forms.CharField()
last_name = forms.CharField()
def save(self, commit=True):
self.instance.first_name = first_name
self.instance.last_name = last_name
return super(PersonalDataForm, self).save(commit)
class Meta:
model: models.Detail
这可能是第一种方法。为了进一步解释,我需要知道用户将如何发布数据。
推荐阅读
- python - Pyspark - 使用地图功能填充字典
- python - 在python中为字典的字典编写一个函数
- consul - 向 consul 注册多个节点
- python - 使用 .get 从字典中检索值的问题
- java - 为什么 JBoss7.1.0EAP 在部署 2 个 ear 文件时给出 java.lang.OutOfMemoryError: Metaspace Error
- azure - 发送遥测时 CorrelationId 和 MessageId 的实际用途是什么?
- java - C# 套接字编程,接收到的套接字长度不正确
- angular - 角度材料分页器无法设置页面大小
- javascript - 如何从浏览器导入 Vue 组件 - 通过 CDN
- ruby-on-rails - 2241 非法硬件指令 rails s