WebHU - Programozási kérdések és válaszok

A beviteli formát nem változóként, hanem urlként kapja meg

Webszolgáltatást építek, hogy az emberek kereshessenek az adatbázisban. Tegyük fel, hogy vannak felhasználóim és cégeim. Minden felhasználó és cég megtalálható az azonosítójára gondolva. Tehát ha myurl/users/<id> keres, akkor az adott felhasználóról kap információt, másrészt, ha keres egy céget/, akkor erről a cégről kap információt. Ehhez két egyszerű beviteli szöveget készítettem (az egyiket a felhasználóknak, a másikat a vállalatoknak), ahová az emberek beírhatják a <id>-t. A problémám az, hogy amikor megkapom az értéket a beviteli szövegből, ezt a myrul/users?<id>-t kapom, és nem a myurl/users/id-t. Megpróbáltam keményen kódolni a perjelet, de akkor myrul/users/?<id> jelenik meg. Tehát a kérdésem az, hogy hogyan kaphatom meg a bemeneti szöveget url-ként és nem változóként.

Flask-ot használok, így a html-emben a következő Jinja2 kód van:

<!-- USER id -->
    <form method='GET' action={{url_for('get_info_by_id', type_collection='user')}}>
        <input type="text" name="my_id"/><input type="submit" value="Go">                         
    </form>

<!-- COMPANY id-->
    <form method='GET' action={{url_for('get_info_by_id', type_collection='company')}}>
        <input type="text" name="my_id"/><input type="submit" value="Go">                      
    </form>

Az én python szkriptemben (lombik)

@app.route('myurl/<type_collection>/<my_id>')
get_info_by_id(type_collection,my_id):
    # search into the database and return info about that id
06.05.2016

  • Ha azt szeretné, hogy az űrlapváltozók az URL-en belül legyenek elhelyezve, nem pedig a lekérdezési karakterláncban vagy a bejegyzés törzsében, akkor JavaScriptet kell használnia az űrlapbeküldés eseményének rögzítéséhez, és az új URL-re navigáláshoz. 06.05.2016
  • A @dirn helyes, de nézze meg a válaszomat, ha csak az adatbázisban való kereséshez és az objektumok visszaadásához próbálja rávenni az űrlapot. 07.05.2016
  • Átmegyek a JavaScript-en, köszönöm. 09.05.2016

Válaszok:


1

Ahogy @dirn javasolta a kommentben, JavaScript-en keresztül csináltam, itt a kód, ha mást is érdekel:

HTML:

<!-- USER id -->
<form method='GET' class="search" id="user" action="">
    <input type="text" name="my_id"/><input type="submit" value="Go">
</form>

<!-- COMPANY id-->
<form method='GET' class="search" id="company" action="">
    <input type="text" name="my_id"/><input type="submit" value="Go">
</form>

JS:

$(".search").submit(function( event ){
    event.preventDefault();
    var my_id = $(this).find(":input").val();
    url = 'myurl/'+ $(this).attr("id") + '/' + my_id;
    window.location.href = url;     
});

python (lombik)

@app.route('myurl/<type_collection>/<my_id>')
get_info_by_id(type_collection,my_id):
    # search into the database and return info about that id
09.05.2016

2

Van valami oka annak, hogy nem használhatja a változót, vagy csak megpróbálja bevinni egy URL-be, hogy elvégezhesse a keresést? Határozottan kimerültem, és feltételeztem, hogy csak azt szeretné, hogy az űrlap- és adatbázis-keresés működjön, ezért próbálja ki a következőket.

Állítsa be az útvonalat a következőképpen:

@app.route('myurl/<type_collection>/')
def findAllTheThings():
    if not request.form['my_id']: # Just check if a specific entity is chosen
        return render_template('YourTemplateHere') # If no entity, then render form 
    entity_id = request.form['my_id']
    get_info_by_id(type_collection, entity_id):
    # search into the database and return info about that id

Most állítsa be a sablont az alábbiak szerint:

<!-- USER id -->
<form method='GET' action={{url_for('findAllTheThings', type_collection='user')}}>
    <input type="text" name="my_id"/><input type="submit" value="Go">                         
</form>

<!-- COMPANY id-->
<form method='GET' action={{url_for('findAllTheThings', type_collection='company')}}>
    <input type="text" name="my_id"/><input type="submit" value="Go">                      
</form>

Most, ha nincs entitás kiválasztva, csak le kell renderelni az űrlapot. Egy pillanat alatt tudathatja velük, hogy ki kell választania egy adott azonosítót, vagy hagyja, hogy kitalálják. Ha kiválasztott egy entitást, akkor a funkciót megfelelően hívja meg.

07.05.2016
  • köszönöm, de url-ként kell elkészítenem, nem változóként 09.05.2016
  • Új anyagok

    A rádiógomb ellenőrzött eseményének használata a jQueryben
    Ebben a cikkben látni fogjuk, hogyan kell dolgozni a jquery választógombbal ellenőrzött eseményeivel. A választógombok HTML gombok, amelyek segítenek kiválasztani egyetlen értéket egy csoportból...

    Körkörös függőségek megoldása terraformban adatforrásokkal – lépésről lépésre
    Mi az a körkörös függőségek Dolgozzunk egy egyszerű eseten, amikor az SQS-sor és az S3-vödör közötti körkörös függőség problémája van egy egymástól függő címkeérték miatt. provider..

    Miért érdemes elkezdeni a kódolást 2023-ban?
    01100011 01101111 01100100 01100101 — beep boop beep boop Világunk folyamatosan fejlődik a technológia körül, és naponta fejlesztenek új technológiákat a valós problémák megoldására. Amint..

    🎙 Random Noise #2  – Örökbefogadás és hit
    az analitika íratlan világának gondozása Szeretné, hogy ezek a frissítések a postaládájába kerüljenek? Iratkozzon fel itt . "Ha önvezető autókat gyártanak, akkor mi miért ne..

    A legrosszabb politika és prediktív modellek májátültetésre jelöltek számára az Egyesült Államokban
    A máj (vagy óangolul lifer) az emberi test legnehezebb belső szervére utal, amely csendesen működik a nap 24 órájában. Mit csinál a máj? 500 feladatot hajt végre a szervezet egészségének..

    5 webhely, amely 2022-ben fejleszti front-end fejlesztői készségeit
    Frontendmentor.io A tényleges projektek létrehozásával a Frontendmentor.io segítséget nyújt a front-end kódolási képességeinek fejlesztésében. A kódolást azután kezdheti meg, hogy..

    Mikor kell használni a Type-t az interfészhez képest a TypeScriptben?
    A TypeScript a JavaScript gépelt szuperkészlete, amely statikus gépelést ad a nyelvhez. Ez megkönnyíti a robusztus és karbantartható kód írását azáltal, hogy a hibákat a fordítási időben..