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.
By default, Django will send email from root@localhost. However, some mail
providers reject all email from this address. To use a different sender
address, modify the SERVER_EMAIL setting.
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:
DEBUGisFalse;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:
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 nó .cgi ní. 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:
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`:
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 ``, `pwagus cc` i bhfolach agus cuirfear réaltaí (**********`) in ionad sna tuarascálacha earráide, ach nochtfar luach an athrógainm.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`:
@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`:
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_wordaguscredit_card_numberi 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':
@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:
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ú:
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 (**********`).
Réad léirithe rialta tiomsaithe a úsáidtear chun socruithe agus luachanna
request.metaa mheaitear mar íogair a mheaitseáil. De réir réamhshocraithe atá comhionann le: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
Truechun 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ú: DEBUGFalse. Tabhair faoi deara go ndéantar luachanna íogairerequest.metaa 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ú:
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:
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ú:
def my_view(request):
if request.user.is_authenticated:
request.exception_reporter_class = CustomExceptionReporter()
...