Conas tuairisciú earráide a bhainistiLink to this heading

Nuair a bhíonn suíomh poiblí á reáchtáil agat ba chóir duit an socrú: setting: DEBUG a mhúchadh i gcónaí. Cuirfidh sé sin go rithfidh do fhreastalaí i bhfad níos gasta, agus cuirfidh sé cosc ar úsáideoirí mailíseacha sonraí d'iarratas a fheiceáil ar féidir leis na leathanaigh earráide a nochtadh.

Mar sin féin, ciallaíonn rith le:setting: DEBUG socraithe go False ní fheicfidh tú earráidí a ghineann do shuíomh riamh - feicfidh gach duine do leathanaigh earráide poiblí ina ionad sin. Ní mór duit súil a choinneáil ar earráidí a tharlaíonn i suíomhanna imscartha, ionas gur féidir Django a chumrú chun tuarascálacha a chruthú le sonraí faoi na hearráidí sin.

Tuarascálacha ríomhLink to this heading

Earráidí freastalaíLink to this heading

Nuair: Socrú: False ná DEBUG, ríomhphostálfaidh Django na húsáideoirí atá liostaithe sa socrú: Setting: ADMINS aon uair a ardaíonn do chód eisceacht neamh-láimhseáilte agus bíonn earráid inmheánach freastalaí mar thoradh air (go docht, le haghaidh aon fhreagra le cód stádais HTTP 500 nó níos mó). Tugann sé seo fógra láithreach do na riarthóirí faoi aon earráidí. Gheobhaidh an: SETTING: ADMINS cur síos ar an earráid, rianú iomlán Python, agus sonraí faoin iarratas HTTP a bhí ina chúis leis an earráid.

De réir réamhshocraithe, seolfaidh Django ríomhphost ó root @localhost. Mar sin féin, diúltaíonn roinnt soláthraithe ríomhphoist go léir ón seoladh seo. Chun seoladh seoltóra difriúil a úsáid, modhnaigh an socrú:setting: SERVER_EMAIL.

Chun an t-iompar seo a ghníomhachtú, cuir seoltaí ríomhphoist na bhfaighteoirí sa socrú: socrú: ADMINS.

404 earráidíLink to this heading

Is féidir Django a chumrú freisin chun earráidí ríomhphoist faoi naisc briste (404 earráidí “nár aimsíodh leathanach”). Seolann Django ríomhphoist faoi earráidí 404 nuair:

  • DEBUG is False;

  • Cuimsíonn do shuíomh: Socrú: MIDDLEWARE: aicme: django.middleware.common.BrokenLinkemailsMiddleware.

Má chomhlíontar na coinníollacha sin, cuirfidh Django ríomhphost chuig na húsáideoirí atá liostaithe sa socrú: SETTING: MANAGERS aon uair a ardaíonn do chód 404 agus tá tagairtí ag an iarraidh. Ní chuireann sé isteach ar ríomhphost a dhéanamh do 404s nach bhfuil tagairteoir acu - de ghnáth is daoine iad sin ag clóscríobh URLanna briste nó róbótaí gréasáin briste. Déanann sé neamhaird freisin ar 404s nuair a bhíonn an tagairteoir cothrom leis an URL iarrtha, ós rud é go dtagann an t-iompar seo ó róbótaí gréasáin briste freisin.

Is féidir leat a rá le Django stop a chur le tuairisciú 404s áirithe tríd an socrú: setting: IGNORABLE_404_URLS a mhodhnú. Ba chóir go mbeadh sé ina liosta de rudaí léirithe rialta tiomsaithe. Mar shampla:

Code
import re

IGNORABLE_404_URLS = [
    re.compile(r"\.(php|cgi)$"),
    re.compile(r"^/phpmyadmin/"),
]

Sa sampla seo, tuairiscífear 404 chuig aon URL a chríochnaíonn le .php.cgi . Ní bheidh aon URL ag tosú le /phpmyadmin/.

Taispeánann an sampla seo a leanas conas roinnt URLanna traidisiúnta a iarrann brabhsálaithe agus crawlers go minic a eisiamh:

Code
import re

IGNORABLE_404_URLS = [
    re.compile(r"^/apple-touch-icon.*\.png$"),
    re.compile(r"^/favicon\.ico$"),
    re.compile(r"^/robots\.txt$"),
]

(Tabhair faoi deara gur abairtí rialta iad seo, mar sin cuirimid cúltaca os comhair tréimhsí chun éalú orthu.)

Más mian leat iompraíocht de:class: django.middleware.common.BrokenLinkemailsMiddleware a shaincheapadh tuilleadh (mar shampla chun neamhaird a dhéanamh d'iarratais a thagann ó crawlers gréasáin), ba cheart duit é a fho-aicmiú agus a mhodhanna a shárú.

Tuarascálacha earráide scLink to this heading

Eolas íogair a scagadhLink to this heading

Tá tuarascálacha earráide an-chabhrach le haghaidh earráidí dífhabhtaithe, mar sin de ghnáth bíonn sé úsáideach an oiread faisnéise ábhartha a thaifeadadh faoi na hearrá <httprequest-attributes>Mar shampla, de réir réamhshocraithe taifeadann Django an taceback iomlán don eisceacht a ardaíodh, athróga áitiúla gach fráma rianaithe, agus an:class: ~django.http.httpRequest's:ref: `tréithe `.

Mar sin féin, uaireanta d'fhéadfadh cineálacha áirithe faisnéise a bheith ró-íogair agus mar sin b'fhéidir nach mbeadh sé oiriúnach súil a choinneáil orthu, mar shampla pasfhocal úsáideora nó uimhir chárta creidmheasa. Mar sin, chomh maith le socruithe atá le cosúil go bhfuil siad íogair a scagadh mar a thuairiscítear sa dhoiciméadú: 'DEBUG', cuireann Django sraith maisitheoirí feidhme ar fáil chun cabhrú leat a rialú cén fhaisnéis ba chóir a scagadh as tuarascálacha earráide i dtimpeallacht táirgeachta (is é sin, áit:setting: False) ::func: sensitive_variables agus:func: `sensitive_paraiméadair post'.

sensitive_variables(*variables)Link to this definition

Má úsáideann feidhm (amharc nó aon ghlaoch ar ais rialta) i do chód athróga áitiúla a bhfuil faisnéis íogair ann, féadfaidh tú cosc a chur ar luachanna na n-athróg sin a chur san áireamh i dtuarascálacha earráide ag baint úsáide as an maisitheoir ``sensitive_variables`:

Code
from django.views.decorators.debug import sensitive_variables


@sensitive_variables("user", "pw", "cc")
def process_info(user):
    pw = user.pass_word
    cc = user.credit_card_number
    name = user.name
    ...

Sa sampla thuas, cuirfear na luachanna do na hathróga úsáideoir ``, `pw agus cc` i bhfolach agus cuirfear réaltaí (**********`) in ionad sna tuarascálacha earráide, ach nochtfar luach an athróg ainm.

Chun gach athróg áitiúil de fheidhm a cheilt go córasach ó logaí earráide, ná tabhair aon argóint don maisitheoir ``sensitive_variables`:

Code
@sensitive_variables()
def my_function(): ...
sensitive_post_parameters(*parameters)Link to this definition

Má fhaigheann duine de <django.http.HttpRequest.POST>do thuairimí réad: :class: ~django.http.http.httpRequest le: attr: Paraiméadair POST `atá so-ghabhálach go mbeidh faisnéis íogair ann, féadfaidh tú cosc a chur ar luachanna na bparaiméadair sin a chur san áireamh sna tuarascálacha earráide ag baint úsáide as an maisitheoir ``sensitive_post_parameters`:

Code
from django.views.decorators.debug import sensitive_post_parameters


@sensitive_post_parameters("pass_word", "credit_card_number")
def record_user_profile(request):
    UserProfile.create(
        user=request.user,
        password=request.POST["pass_word"],
        credit_card=request.POST["credit_card_number"],
        name=request.POST["name"],
    )
    ...

Sa sampla thuas, cuirfear na luachanna do pharaiméadair POST pass_word agus credit_card_number i bhfolach agus cuirfear réaltaí (**********`) in ionadaíocht an iarratais taobh istigh de na tuarascálacha earráide, ach nochtfar luach an pharaiméadar ``ainm ``.

Chun gach paraiméadar POST d'iarratas a cheilt go córasach i dtuarascálacha earráide, ná cuir aon argóint ar fáil don maisitheoir ``sensitive_post_paraméters':

Code
@sensitive_post_parameters()
def my_view(request): ...

Déantar gach paraiméadar POST a scagadh go córasach as tuarascálacha earráide le go cinnte:mod: tuairimí django.contrib.auth.views (login, password_reset_confirm`, password_change`, agus add_view` agus user_change_password` admin auth`) chun faisnéis íogair a chosc mar shampla pasfhocail úsáideora.

Tuarascálacha earráide sainLink to this heading

All:Func: sensitive_variables agus:func: sensitive_post_parameters is ea anótáil, faoi seach, an fheidhm maisithe le hainmneacha athróg íogair agus an rud HttpRequest ``a anótáil le hainmneacha paraiméadair íogair POST, ionas gur féidir an fhaisnéis íogair seo a scagadh amach as tuarascálacha nuair a tharlaíonn earráid. Déantar an scagadh iarbhír ag scagaire tuairisceora earráide réamhshocraithe Django: :class: `django.views.debug.safeExceptionReporterFilter. Úsáideann an scagaire seo anótaí na mhaisitheoirí chun réaltaí (**********`) a chur in ionad na luachanna comhfhreagracha nuair a tháirgtear na tuarascálacha earráide. Más mian leat an t-iompar réamhshocraithe seo a shárú nó a shaincheapadh do do shuíomh iomlán, ní mór duit do rang scagaire féin a shainiú agus a rá le Django é a úsáid trí:setting: DEFAULT_EXCEPTION_REPORTER_FILTER:

Code
DEFAULT_EXCEPTION_REPORTER_FILTER = "path.to.your.CustomExceptionReporterFilter"

Féadfaidh tú rialú ar bhealach níos gráinneach freisin cén scagaire atá le húsáid laistigh d'aon radharc ar leith trí thréith `exception_reporter_filter httpRequest a shocrú:

Code
def my_view(request):
    if request.user.is_authenticated:
        request.exception_reporter_filter = CustomExceptionReporterFilter()
    ...

Caithfidh do rang scagaire saincheaptha oidhreacht ó:class: django.views.debug.safeExceptionReporterFilter agus féadfaidh sé na tréithe agus na modhanna seo a leanas a shárú:

class SafeExceptionReporterFilterLink to this definition
cleansed_substituteLink to this definition

An luach teaghrán le luach íogair a chur in ionad. De réir réamhshocraithe cuireann sé réaltaí in ionad luachanna na n-athróg íogair (**********`).

hidden_settingsLink to this definition

Réad léirithe rialta tiomsaithe a úsáidtear chun socruithe agus luachanna request.meta a mheaitear mar íogair a mheaitseáil. De réir réamhshocraithe atá comhionann le:

Code
import re

re.compile(r"API|AUTH|TOKEN|KEY|SECRET|PASS|SIGNATURE|HTTP_COOKIE", flags=re.IGNORECASE)
is_active(request)Link to this definition

Filleann True chun an scagadh a ghníomhachtú in:meth: get_post_paraméters agus:meth: get_traceback_frame_variables. De réir réamhshocraithe tá an scagaire gníomhach má tá: socrú: DEBUG False. Tabhair faoi deara go ndéantar luachanna íogaire request.meta a scagadh i gcónaí in éineacht le luachanna socraithe íogaire, mar a thuairiscítear sa doiciméadúiséireacht: DEBUG.

get_post_parameters(request)Link to this definition

Filleann sé an foclóir scagtha de pharaiméadair POST. Cuirtear: attr: cleansed_substitute in ionad luachanna íogair.

get_traceback_frame_variables(request, tb_frame)Link to this definition

Tugann an foclóir scagtha d'athróg áitiúla ar ais don fhráma rianaithe ar leith. Cuirtear: attr: cleansed_substitute in ionad luachanna íogair.

Más gá duit tuarascálacha earráide a shaincheapadh níos faide ná scagadh féadfaidh tú rang tuairisceoir earráide saincheaptha a shonrú trí:setting: DEFAULT_EXCEPTION_REPORTER a shainiú:

Code
DEFAULT_EXCEPTION_REPORTER = "path.to.your.CustomExceptionReporter"

Tá an tuairisceoir eisceachta freagrach as sonraí na tuarascála eisceachta a thiomsú, agus iad a fhormáidiú mar théacs nó HTML go cuí. (Úsáideann an tuairisceoir eisceachta: socrú: DEFAULT_EXCEPTION_REPORTER_FILTER agus sonraí na tuarascála eisceachta á ullmhú.)

Caithfidh do rang tuairisceora saincheaptha oidhreacht ó:class: django.views.debug.exceptionReporter.

class ExceptionReporterLink to this definition
html_template_pathLink to this definition

Maoin a thugann ar ais a:class: PathLib.path a léiríonn cosán iomlán an chórais chomhaid chuig teimpléad chun léiriú HTML na heisceachta a léiriú. Réamhshocraithe don teimpléad a chuirtear ar fáil Django.

text_template_pathLink to this definition

Maoin a thugann ar ais a:class: PathLib.path a léiríonn cosán iomlán an chórais chomhaid chuig teimpléad chun léiriú téacs simplí na heisceachta a léiriú. Réamhshocraithe don teimpléad a chuirtear ar fáil Django.

get_traceback_data()Link to this definition

Cuir ar ais foclóir ina bhfuil faisnéis rianaithe ar ais.

Is é seo an príomhphointe síneadh chun tuarascálacha eisceachta a shaincheapadh, mar shampla:

Code
from django.views.debug import ExceptionReporter


class CustomExceptionReporter(ExceptionReporter):
    def get_traceback_data(self):
        data = super().get_traceback_data()
        # ... remove/add something here ...
        return data
get_traceback_html()Link to this definition

Tabhair ar ais leagan HTML den tuarascáil eisceachta.

Úsáidtear le haghaidh leagan HTML de leathanach earráide HTTP debug 500.

get_traceback_text()Link to this definition

Tabhair ar ais leagan téacs simplí den tuarascáil eisceachta.

Úsáidtear le haghaidh leagan téacs simplí de leathanach earráide HTTP debug 500 agus tuarascálacha ríomhphoist.

Mar is amhlaidh leis an rang scagaire, féadfaidh tú rialú cén rang tuairisceoir eisceachta atá le húsáid laistigh d'aon radharc ar leith trí thréith `exception_reporter_class httpRequest a shocrú:

Code
def my_view(request):
    if request.user.is_authenticated:
        request.exception_reporter_class = CustomExceptionReporter()
    ...