如何发送发帖请求?

时间:2020-07-03 14:59:24

标签: django post

我仅出于学习目的制作网站。 当我尝试使用发布请求时,它显示了以下错误:

/ analyse处的RuntimeError

您通过POST调用了此URL,但该URL并非以斜杠结尾,并且已设置APPEND_SLASH。 Django在维护POST数据时无法重定向到斜杠URL。更改表单,使其指向127.0.0.1:8000/analyse/(请注意斜杠),或在Django设置中设置APPEND_SLASH = False。

这是我的views.py和index.html:

views.py:

参考djtext = request.post.get('text', 'default')

# I have created this file - Piyush
from django.http import HttpResponse
from django.shortcuts import render


def index(request):
return render(request, 'index.html')

# return HttpResponse("Home")


def analyse(request):
global line
djtext = request.POST.get('text', 'default')
print(djtext)

# Check checkbox value
removepunc = request.GET.get('removepunc', 'off')
fullcaps = request.GET.get('fullcaps', 'off')
newlineremover = request.GET.get('newlineremover', 'off')
extraspaceremover = request.GET.get('extraspaceremover', 'off')


    # Check which checkbox is on
    if removepunc == "on":

    punctuations = '''!()-{}[]:;'",<>./?@#$%^&*_~'''
    analysed = ""
    for char in djtext:
        if char not in punctuations:
            analysed = analysed + char

    params = {'purpose': 'Removed punctuations', 'analysed_text': analysed}
    return render(request, 'analyse.html', params)
    elif fullcaps == "on":
    analysed = ""
    for char in djtext:
        analysed = analysed + char.upper()

    params = {'purpose': 'Change to UPPERCASE', 'analysed_text': analysed}
    return render(request, 'analyse.html', params)

    elif newlineremover == "on":
    analysed = ""
    for char in djtext:
        if char != "\n":
            analysed = analysed + char

    params = {'purpose': 'Removed new Lines', 'analysed_text': analysed}
    return render(request, 'analyse.html', params)

    elif extraspaceremover == "on":
    analysed = ""
    for index, char in enumerate(djtext):
        if djtext[index] == " " and djtext[index + 1] == " ":
            pass
        else:
            analysed = analysed + char
    params = {'purpose': 'Remove extra space', 'analysed_text': analysed}
    return render(request, 'analyse.html', params)

    else:
    return HttpResponse("Error")

# def capfirst(request):
#     return HttpResponse("capitalise first <a href='/'>back</a>")
#
#
# def newlineremover(request):
#     return HttpResponse("new line <a href='/'>back</a>")
#
#
# def spaceremove(request):
#     return HttpResponse("space remover <a href='/'>back</a>")
#
#
# def charcount(request):
#     return HttpResponse("charcount <a href='/'>back</a>")

index.html:

参考<div class="container"><form action="/analyse" method='post'>

<!doctype html>
<html lang="en" xmlns="http://www.w3.org/1999/html" xmlns="http://www.w3.org/1999/html">
  <head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

<!-- Bootstrap CSS -->
<link rel="stylesheet" 
href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9 
aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">

<title>TextUtils.com</title>
 </head>
<body>
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<a class="navbar-brand" href="#">Welcome to TextUtils</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data- 
target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria- 
label="Toggle navigation">
    <span class="navbar-toggler-icon"></span>
    </button>

   <div class="collapse navbar-collapse" id="navbarSupportedContent">
    <ul class="navbar-nav mr-auto">
      <li class="nav-item active">
      <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">About Us</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">Contact Us</a>
  </li>
</ul>
<form class="form-inline my-2 my-lg-0">
  <input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search">
  <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
    </form>
</div>
</nav>

<div class="alert alert-success alert-dismissible fade show" role="alert">
  <strong>Welcome to textutils</strong> Change your Text with your taste!
  <button type="button" class="close" data-dismiss="alert" aria-label="Close">
    <span aria-hidden="true">&times;</span>
  </button>
</div>

<div class="container">
  <form action="/analyse" method='post'>


  <div class="form-group">
    <label for="exampleFormControlTextarea1">Write your text here...</label>
    <textarea class="form-control" name="text" id="exampleFormControlTextarea1" rows="5"></textarea>
  </div>
<div class="custom-control custom-switch">
  <input type="checkbox"name="removepunc" class="custom-control-input" id="customswitch1">
  <label class="custom-control-label" for="customswitch1">Remove Punctuations</label>
</div>

  <div class="custom-control custom-switch">
  <input type="checkbox"name="fullcaps" class="custom-control-input" id="customswitch2">
  <label class="custom-control-label" for="customswitch2">Uppercase</label>
</div>

  <div class="custom-control custom-switch">
  <input type="checkbox"name="newlineremover" class="custom-control-input" id="customswitch3">
  <label class="custom-control-label" for="customswitch3">New Line Remover</label>
</div>

  <div class="custom-control custom-switch">
  <input type="checkbox"name="extraspaceremover" class="custom-control-input" id="customswitch4">
  <label class="custom-control-label" for="customswitch4">Extra Spaces Remover</label>
</div>
<button type="Submit" class="btn btn-outline-dark mt-2">Analyse Text</button>
  </form>
</div>


<!-- Optional JavaScript -->
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384- 
DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384- 
Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" 
integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" 
crossorigin="anonymous"></script>
</body>
</html>

1 个答案:

答案 0 :(得分:0)

请确保在您发送任何请求时都紧跟/。 Django会将您重定向到正确的位置(带斜线或不带斜线),但POST数据会被删除。

有关更多详细信息,请参见this post