2015-11-17 1 views
1

Cette question ne concerne pas spécifiquement django mais python dans son ensemble. Ce que je veux faire est, quand l'utilisateur soumet, comment je vérifierais pour voir que le titre ne devrait pas commencer par "" (espace). Il peut commencer avec n'importe quel autre personnage mais pas d'espace.Vérifiez si le texte commence par un espace vide

vues:

def admin_page_create(request): 
    if request.is_ajax() and request.POST: 
     title = request.POST.get("title", "") 
     if title != '' or title != <<<regex or function() to check title does not start with a blank space>>>: 
      Page.objects.create(title=title, user=request.user) 
      data = "Created a new page: '" + title + "'." 
      return HttpResponse(json.dumps(data), content_type='application/json') 
     else: 
      data = 'You gave us a blank title. Please try again.' 
      return HttpResponse(json.dumps(data), content_type='application/json') 
    else: 
     raise Http404 
+2

Voulez-vous dire 'title.startswith ('')'? –

+0

Oui, c'était ça. Je vous remercie. –

Répondre

5

Vous pouvez obtenir le premier caractère d'une chaîne en utilisant son index, qui est 0. Ensuite, il suffit de le comparer à " " ou utiliser .isspace().

if title[0] != " ": 
if not title[0].isspace(): 

Une autre solution et probablement plus élégante, comme l'a déclaré @Andy et @ Daniel, serait d'utiliser .startswith().

if not title.startwith(" "): 

Vous pourriez être intéressé par .strip() qui supprime les caractères espaces de début et la fin d'une chaîne ou même .lstrip() plus précisément.

+0

ou peut-être 'lstrip' dans ce cas? –

+0

@JulienSpronck Merci, je l'ai ajouté à la réponse. – Delgan

+0

J'ai changé la vue à 'if title! = '' Ou title.startswith (''):'. Mais si je publie le titre en tant que "asdf", il va toujours à la section "else" du code. –

2

Vous pouvez utiliser la méthode startswith:

title.startswith(' ') 
1

Si vous voulez vérifier si le premier caractère est un espace:

if title.startswith(" "): 

Si vous voulez vérifier si le premier caractère est les espaces blancs , vous pouvez le faire:

import re # regular expression module 
if re.match(r"\s", title): # match() matches only at beginning of subject text. 
          # \s is any whitespace 

ou ceci:

if title != title.lstrip(): # lstrip removes whitespaces at the left (hence the "l")