{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "11da75aa",
   "metadata": {},
   "source": [
    "# 22-11 · Trasy i parametry ścieżek\n",
    "\n",
    "Praktyka do rozdziału [„Rutowanie w Flask: URL i funkcje-obsługujące”](/pl/chapters/rozdzial-22/22-11-flask-marshrutizaciya.html)."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f0d770c4",
   "metadata": {},
   "source": [
    "## Cel\n",
    "\n",
    "Zweryfikować, że parametr typowanej ścieżki `<int:...>` akceptuje numer i odrzuca adres nienumeryczny kodem 404."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "52687ea5",
   "metadata": {},
   "source": [
    "## Sprawa robocza"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "86341c60",
   "metadata": {},
   "outputs": [],
   "source": [
    "from flask import Flask\n",
    "\n",
    "app = Flask(__name__)\n",
    "\n",
    "\n",
    "@app.route(\"/task/<int:task_id>\")\n",
    "def poluchit_zadachu(task_id):\n",
    "    return f\"Задача №{task_id}\", 200\n",
    "\n",
    "\n",
    "client = app.test_client()\n",
    "\n",
    "otvet_chislo = client.get(\"/task/42\")\n",
    "otvet_tekst = client.get(\"/task/abc\")\n",
    "\n",
    "print(\"Число:\", otvet_chislo.status_code, otvet_chislo.get_data(as_text=True))\n",
    "print(\"Не число:\", otvet_tekst.status_code)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "11f879d4",
   "metadata": {},
   "source": [
    "## Sprawdzenie wyniku"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "debed0aa",
   "metadata": {},
   "outputs": [],
   "source": [
    "assert otvet_chislo.status_code == 200\n",
    "assert \"Задача №42\" in otvet_chislo.get_data(as_text=True)\n",
    "assert otvet_tekst.status_code == 404\n",
    "print(\"Верно: <int:task_id> принимает число и отклоняет нечисловой адрес.\")"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Cartesian Python 3.14",
   "language": "python",
   "name": "cartesian-python314"
  },
  "language_info": {
   "name": "python",
   "version": "3.14.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
