首页 > 解决方案 > Django - html 提交以查看对 html 页面的 api 调用

问题描述

所以我和他们一样绿色,正在尝试以下。我们的工作管理应用程序的 API 很一般,但客户门户很差。我正在尝试至少制作一个我想要的原型并且一直在使用 Django(第一次)我想我快到了,但我自己都纠结了。作为一个新手,文档并没有给我太多启发。

用户从其中一个网页输入工作编号并单击提交。我需要那个工作编号来完成我的 API 调用然后我想在 job.html 中显示工作信息几天后(比如 5 天)

我将作业编号传递给视图并在终端中查看 JSON 数据,但无法将其显示在 job.html 中

我收到此错误

AttributeError at /job/ 'dict' object has no attribute 'headers' Request Method: POST Request URL: http://127.0.0.1:8000/job/ Django Version: 3.2.dev20210111104520 Exception Type: AttributeError Exception Value: **'dict' object has no attribute 'headers'** Exception Location: c:\users\davidp\django\django\middleware\clickjacking.py, line 33, in process_response Python Executable: C:\Program Files\Python38\python.exe **Python Version: 3.8.2**

当我在代码中手动输入工作编号时,我的工作页面正在工作,但那是几天前的事了,我试图让其他一切正常工作,我似乎已经破坏了那部分。

base.html - 用户添加工作编号并点击提交

<form class="form-inline my-2 my-lg-0"  method ='POST'action="/job/">{% csrf_token %}
      <input  type="text" placeholder="Job Number"name="job2find">&nbsp;&nbsp;&nbsp;
      
      <button class="btn btn-outline-success my-2 my-sm-0" target='job' type="submit">Find Job</button>
    </form>

网址.py

from django.urls import include, path 
from django.conf.urls import url


from display_faults import views
from display_faults.views import GetFaults, GetJobs, GetInvoices, GetJ
from display_faults.views import get_Job

urlpatterns = [
   
    path('admin/', admin.site.urls),
    path('faults/', GetFaults.as_view(template_name='faults.html'), name='tt_tickets'),
    path('invoices/', GetInvoices.as_view(template_name='invoices.html'), name='tt_tickets'),
    path('todayjb/',views.Showjb,name='Enable_Jobs'),
    path('job/',views.get_Job)
    #path('job/', GetJ.as_view(template_name='job.html'))
]

视图.py

def get_Job(request,*args, **kwargs):
    print(request.method)
    if request.method=="POST":
        print('*'*50)
       
        jb= request.POST['job2find']
        print (jb)
        print('*'*50) 
        jobber=jb
       

        url = ("https://middle of my url/jobs/"+jobber)
        r = requests.get(url, headers={'Authorization':'Bearer %s' % 'bearer is here but will be moved'})
        jobs = r.json()
        job_list = []
        print (jobs)
    
    return jobs  

工作.html

{% extends 'base.html' %}
{% block content %}
<body>

<p>
  

Job ID:
  <input name="textfield" type="text" id="textfield" value="{{jobs.ID}}">
Name:
<input type="text" name="textfield5" id="textfield5"value="{{jobs.Name}}">
Stage:
  <input type="text" name="textfield6" id="textfield6"value="{{jobs.Stage}}">
  <p>&nbsp;</p>
Order:
  <input type="text" name="textfield2" id="textfield2"value="{{jobs.OrderNo}}">
  
  Status:
<input type="text" name="textfield7" id="textfield7"value="{{jobs.Status.Name}}">
Due Date:
  <input type="text" name="textfield3" id="textfield3"value="{{jobs.DueDate}}">
  <p>&nbsp;</p>
Site Address:
  <input type="text" name="textfield4" id="textfield4"value="{{jobs.Site.Name}}"size="80" >
   <p>&nbsp;</p>
</p>
<p>&nbsp;</p>

<p>
  <label for="textarea6">Notes:</label>
  <textarea name="textarea2"rows="10" cols="150" id="textarea6">{{jobs.Notes}}</textarea>
</p>
<label>Description:</label>
<p>&nbsp;</p>
{{jobs.Description|safe}}
<p>&nbsp;</p>
<p>&nbsp;</p> 
    {%endblock%}
   
    
  

</body>
</html>

谢谢,如果我破坏了代码,我深表歉意。

标签: djangodjango-viewsdjango-templates

解决方案


推荐阅读