小编Opt*_*ime的帖子

drf_yasg 文档参数未显示

我正在使用 drf_yasg 来自我记录我的 API,该 API 是使用 django 框架构建的,但任何端点都没有显示任何参数。我的方法是以 JSON 格式在 http 请求正文中传递参数。然后我从 request.data 读取参数。下面是其中一个视图的示例,其中它将“id”作为请求正文中的参数。

@api_view(['POST'])
@permission_classes([IsAuthenticated])
def get_availability_by_schoolid(request):
    if request.user.is_donor:
        try:
            #Get the existing slots and remove them to replace with new slots
            slots = SchoolSlot.objects.filter(school__id=request.data["id"]).values('day','am','pm')
            availability = process_availability(slots)
            availabilityslotserializer = SchoolSlotSerializer(availability)
            return Response(availabilityslotserializer.data, status=status.HTTP_200_OK)
        except Exception as e:
            print(e)
            return Response(ResponseSerializer(GeneralResponse(False,"Unable to locate school")).data, status=status.HTTP_400_BAD_REQUEST)
    else:
        return Response(ResponseSerializer(GeneralResponse(False,"Not registered as a donor")).data, status=status.HTTP_400_BAD_REQUEST)
Run Code Online (Sandbox Code Playgroud)

这将在 swagger 文档中显示如下:

招摇输出

我一直在查看文档,它表明我可能需要添加带有手动参数的装饰器,但我不知道如何做到这一点,因为我能找到的示例是获取查询参数或路径参数。我在下面添加了装饰器,它可以响应文档。

@swagger_auto_schema(method='post', responses={200: SchoolSlotSerializer,400: 'Bad Request'})
Run Code Online (Sandbox Code Playgroud)

请求正文的示例如下:

  { "id": 43 }
Run Code Online (Sandbox Code Playgroud)

更新:

我似乎通过以下装饰器得到了一些东西: …

swagger django-rest-framework drf-yasg

4
推荐指数
1
解决办法
7745
查看次数

Django Query - 使用日期比较中的布尔值进行注释

我想编写一个查询,该查询将根据模型中的日期与现在的日期/时间的比较来添加过期注释,并根据结果接收布尔值。我找不到这是如何完成的。

到目前为止我已经尝试过以下操作:

.annotate(expired=F( F('date_updated') > datetime_now))
Run Code Online (Sandbox Code Playgroud)

有人可以让我知道实现这一目标的方法吗?

django django-models django-orm

4
推荐指数
1
解决办法
867
查看次数

通过 Sendgrid API 发送电子邮件时出错

在我的生产服务器上,我收到以下错误

init () 收到意外的关键字参数 'apikey'”

开发服务器上的相同代码正在运行。

我的生产服务器正在运行gunicorn,并且我已将环境变量SENDGRID_API_KEY添加到gunicorn.service文件中。我已经重新启动了gunicorn和nginx。我可以看到环境变量已加载。

我调用发送电子邮件的方法如下:

def sendtestemail(to):
    sg = sendgrid.SendGridAPIClient(apikey=os.environ.get('SENDGRID_API_KEY'))
    from_email = Email("<myemail>@<mydomain>.com")
    to_email = Email(to)
    subject = "Sending with SendGrid is Fun"
    content = Content("text/plain", "and easy to do anywhere, even with Python")
    mail = Mail(from_email, subject, to_email, content)
    response = sg.client.mail.send.post(request_body=mail.get())
    return [response.status_code, response.body, response.headers]
Run Code Online (Sandbox Code Playgroud)

python django sendgrid sendgrid-api-v3

3
推荐指数
1
解决办法
3346
查看次数

响应路由到具有不同 URL 的相同组件

在我的主课中,我有一个导航栏,其中包含以下选项:

          <NavDropdown title="Search" id="collasible-nav-dropdown">
            <NavDropdown.Item href="#/searchpage/p" onClick={this.dontEdit}>Find People</NavDropdown.Item>
            <NavDropdown.Item href="#/searchpage/s" onClick={this.searchSchool}>Find Schools</NavDropdown.Item>
            <NavDropdown.Item href="#/searchpage/w" onClick={this.dontEdit}>Find Work Places</NavDropdown.Item>
          </NavDropdown>
Run Code Online (Sandbox Code Playgroud)

它们有一个路由到同一组件的路由,然后该组件读取 URL 末尾的参数并根据值运行不同的搜索。例如,'s' 是搜索学校,'p' 是搜索人。如果我在导航栏的不同搜索功能之间导航,则它不会刷新到新搜索。例如,如果我从“Find Schools”转到“Find Work”,它会留在学校,但如果我要直接转到“Find Work Places”,则它会直接转到那里。此外,如果我导航到主页并返回另一个搜索,那么它就可以工作。

路线看起来像:

<Route path="/searchpage/:type"  render={props => (<SearchPage {...props} findPerson={this.findPerson} routeReset={this.routeReset} getPersonsByName={this.getPersonsByName} />)}/>
Run Code Online (Sandbox Code Playgroud)

有没有人能够建议如何让它按照我的意愿进行路由?搜索组件是这样的:

import Row from 'react-bootstrap/Row';
import Col from 'react-bootstrap/Col';
import Container from 'react-bootstrap/Container';
import Button from 'react-bootstrap/Button';

import Flash from './components/flash';
import Search from "./components/search";

const searchtypes = {"p":"People","w":"Work Places","s":"Schools"};

class SearchPage extends Component {



  constructor(props) {
    super(props);

    this.state = {
      type:this.props.match.params.type …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-router

2
推荐指数
1
解决办法
4050
查看次数