django: return string from view

PythonDjangoDjango Views

Python Problem Overview


I know this is a simple question, sorry. I just want to return a simple string, no templates.

I have my view:

def myview(request):
    return "return this string"

I don't remember the command. Thanks

Python Solutions


Solution 1 - Python

According to the documentation:

> A view function, or view for short, is simply a Python function that > takes a Web request and returns a Web response. > > Each view function is responsible for returning an HttpResponse > object.

In other words, your view should return a HttpResponse instance:

from django.http import HttpResponse

def myview(request):
    return HttpResponse("return this string")

Solution 2 - Python

If you create a chat-bot or need this response on post request for confirmation - you should add decorator, otherwise Django block post requests. More info you can find here https://docs.djangoproject.com/en/2.1/ref/csrf/

Also in my case I had to add content_type="text/plain".

from django.views.decorators.csrf import csrf_protect
from django.http import HttpResponse
@csrf_exempt
def Index(request):
    return HttpResponse("Hello World", content_type="text/plain")

Solution 3 - Python

You can't send directly a string, but you can send a JSON object:

from django.http import JsonResponse

def myview(request):
    return JsonResponse({'mystring':"return this string"})

Then process that. With Javascript for example if the page was requested by AJAX:

$.ajax({url: '/myview/',	type: 'GET',
							data: data,
							success: function(data){ 
								console.log(data.mystring);
								...
								 }
							})

https://docs.djangoproject.com/en/1.11/ref/request-response/#jsonresponse-objects

Solution 4 - Python

we use HttpResponse to render the Data

HttpResponse to render the Text

from django.http import HttpResponse
def Index(request):
    return HttpResponse("Hello World")

HttpResponse to render the HTML

from django.http import HttpResponse
    def Index(request):
        text = """<h1>Hello World</h1>"""
        return HttpResponse(text)    

Solution 5 - Python

urls.py

from django.contrib import admin
from django.urls import path
from . import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('about/',views.aboutview),
    path('',views.homeview),
]

views.py

from django.http import HttpResponse

def aboutview(request):
  return HttpResponse("<h1>about page</h1>")
    
def homeview(request):
  return HttpResponse("<h1>home page</h1>")

Solution 6 - Python

I need to clear the air should someone bump to this in the feature, like wanting to pass any sort of string. I hard to do the following, starting with the view:

from django.http import HttpResponse        
def myview(request):
    text = """<a href="https://www.w3schools.com">Visit W3Schools.com!</a>"""
    return HttpResponse(text)

Then urls, btw the endpoint here "submit/myview" can be anything

 path('submit/myview', views.myview, name='myview'),

the ajax side of things on the template where you want to render this 

 
<div id="demo">
<h2>The XMLHttpRequest Object</h2>
<button type="button" onclick="loadDoc()">Change Content</button>
</div>

<script>
function loadDoc() {
  const xhttp = new XMLHttpRequest();
  xhttp.onload = function() {
    document.getElementById("demo").innerHTML =
    this.responseText;
  }
  xhttp.open("GET", "myview");
  xhttp.send();
}
</script>

Solution 7 - Python

According Django documentation Django uses request and response objects to pass state through the system.

When a page is requested, Django creates an HttpRequest object that contains metadata about the request. Then Django loads the appropriate view, passing the HttpRequest as the first argument to the view function. Each view is responsible for returning an HttpResponse object.Do as follows

from django.http import HttpResponse

def myview(request):
    text="return this string"
    return HttpResponse(text)

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionPaulView Question on Stackoverflow
Solution 1 - PythonalecxeView Answer on Stackoverflow
Solution 2 - PythonawaikView Answer on Stackoverflow
Solution 3 - PythonThePhiView Answer on Stackoverflow
Solution 4 - PythonvinodsesettiView Answer on Stackoverflow
Solution 5 - PythonYilmazView Answer on Stackoverflow
Solution 6 - Pythonuser3719458View Answer on Stackoverflow
Solution 7 - PythonThusitha DeepalView Answer on Stackoverflow